He escuchado mencionar estadísticas que SQL Server mantiene de manera predeterminada. ¿Qué están rastreando y cómo puedo usar esta información para mejorar mi base de datos?
fuente
He escuchado mencionar estadísticas que SQL Server mantiene de manera predeterminada. ¿Qué están rastreando y cómo puedo usar esta información para mejorar mi base de datos?
Las estadísticas simplemente son una forma de metadatos dinámicos que ayudan al optimizador de consultas a tomar mejores decisiones. Por ejemplo, si solo hay una docena de filas en una tabla, entonces no tiene sentido ir a un índice para hacer una búsqueda; siempre será mejor hacer un escaneo completo de la tabla. Pero si esa misma tabla crece a un millón de filas, entonces probablemente será mejor que use el índice. Pero si consulta esa tabla en una columna que solo tiene muy pocos valores únicos (por ejemplo, podría ser una columna de "sexo" que contiene solo "M" o "F"), en realidad un FTS podría ser mejor en ese caso porque necesita recuperar el bloque de todos modos para construir el conjunto de resultados. Ahora digamos que su tabla es 99% "M" y solo 1% "F", deberíamos FTS en un caso o usar un índice en el otro. Misma tabla, misma consulta, potencialmente cuatro planes de consulta diferentes según el contenido de la tabla. Este tipo de cosas son las "estadísticas" y son individuales para cada base de datos; incluso dos bases de datos con una estructura idéntica de tablas e índices tendrán estadísticas diferentes.
En resumen, en un motor de base de datos moderno hay dos tipos de optimización de consultas: reescribir el SQL (optimización basada en reglas, como un compilador reescribe su C para hacerlo más eficiente) y elegir la ruta correcta de los datos (optimización basada en costos , como un compilador JIT que identifica puntos de acceso en tiempo de ejecución). Solo necesita preocuparse por esto si ve que el optimizador de consultas está haciendo algo obviamente incorrecto (por ejemplo, elegir FTS cuando sabe que un índice sería mejor).
Los utiliza el optimizador de consultas (documento técnico en MSDN) para rastrear la distribución de valores en índices y / o columnas.
Su única preocupación debería ser actualizar regularmente : simplemente deje el motor DB para hacer sus cosas
fuente