read query column campo sql-server database indexing statistics

query - ESTADÍSTICAS SQL Server



xml sql server 2008 (2)

En Sql Server 2005, configure las estadísticas de creación automática y las estadísticas de actualización automática. No tendrá que preocuparse por crearlos o mantenerlos usted mismo, ya que la base de datos maneja esto muy bien.

Entonces, para este proyecto, tenemos un montón de consultas que se ejecutan regularmente (cada minuto). Utilicé el "Análisis de consultas en el motor de base de datos" para verificarlas.

Son bastante simples: selecciona * de tablex donde procesado = ''0''

Hay un índice en procesado, y cada consulta debe devolver <1000 filas en una tabla con registros de 1MM.

El Analizador recomendó crear algunas ESTADÍSTICAS sobre esto ... Entonces mi pregunta es: ¿Cuáles son esas estadísticas? ¿realmente ayudan al rendimiento? ¿Qué tan costosos son para una mesa como la de arriba?

Tenga en cuenta que de ninguna manera me llamaría usuario experimentado de SQL Server ... Y esta es la primera vez que uso este Analizador.


Las estadísticas son lo que SQL Server usa para determinar la viabilidad de cómo obtener datos.

Digamos, por ejemplo, que tiene una tabla que solo tiene un índice agrupado en la clave principal. Cuando ejecuta SELECT * FROM tablename WHERE col1=value , SQL Server solo tiene una opción, para escanear cada fila en la tabla para encontrar las filas correspondientes.

Ahora agregamos un índice en col1, por lo que supone que SQL Server usará el índice para buscar las filas correspondientes, pero eso no siempre es cierto. Digamos que la tabla tiene 200,000 filas y col1 solo tiene 2 valores: 1 y 0. Cuando SQL Server usa un índice para buscar datos, el índice contiene punteros a la posición del índice agrupado. Dado que solo hay dos valores en la columna indexada, SQL Server decide que tiene más sentido escanear la tabla porque usar el índice sería más trabajo.

Ahora agregaremos otras 800,000 filas de datos a la tabla, pero esta vez los valores en col1 son muy variados. Ahora es un índice útil porque SQL Server puede utilizar el índice de forma viable para limitar lo que necesita sacar de la tabla. ¿Utilizará SQL Server el índice?

Depende. Y de lo que depende son las estadísticas. En algún punto en el tiempo, con las AUTO UPDATE STATISTICS , el servidor actualizará las estadísticas del índice y sabrá que es un índice válido y muy bueno para usar. Hasta ese momento, sin embargo, ignorará el índice como irrelevante.

Ese es un uso de las estadísticas. Pero hay otro uso y que no está relacionado con los índices. SQL Server mantiene estadísticas básicas sobre todas las columnas en una tabla. Si hay suficientes datos diferentes para que valga la pena, SQL Server realmente creará un índice temporal en una columna y lo usará para filtrar. Si bien esto lleva más tiempo que usar un índice existente, lleva menos tiempo que un escaneo de tabla completo.

Algunas veces obtendrá recomendaciones para crear estadísticas específicas sobre columnas que serían útiles para eso. Estos no son índices, pero hacen un seguimiento del muestreo estadístico de datos en la columna para que SQL Server pueda determinar si tiene sentido crear un índice temporal para devolver datos.

HTH