2008-09-24 14 views
43

El Asesor de ajuste de la base de datos recomienda que cree un conjunto de estadísticas en mi base de datos. Soy algo así como SQL n00b, así que esta fue la primera vez que me encontré con una criatura así. La entrada en MSDN era un poco obtusa. ¿Alguien podría explicar qué hace exactamente esto, y por qué es una buena idea?¿Qué hace "Crear estadísticas" en SQL Server 2005?

Respuesta

38

Cost Based Query Optimisation es una técnica que usa histogramas y recuentos de filas para calcular de forma heurística el costo de ejecutar un plan de consulta. Cuando envía una consulta a SQL Server, la evalúa y genera una serie de Query Plans para la cual usa heurística para estimar los costos. A continuación, selecciona el plan de consulta más barato.

El optimizador de consultas utiliza las estadísticas para calcular el costo de los planes de consulta. Si las estadísticas faltan o están desactualizadas, no tiene datos correctos para estimar el plan. En este caso, puede generar planes de consulta moderados o altamente subóptimos.

SQL Server (en la mayoría de los casos) generará estadísticas en la mayoría de las tablas e índices automáticamente, pero puede complementarlas o forzar las actualizaciones. El asistente de ajuste de consultas supuestamente ha encontrado algunas estadísticas faltantes o uniones identificadas dentro de la consulta para las que se deberían agregar las estadísticas.

+0

El último párrafo solo es técnicamente cierto: SQL Server no creará un Índice persistente de forma autónoma (es decir, 'CREATE INDEX') pero puede almacenar algunos datos en un" Index Spool "pero estos datos no se comparten entre diferentes ejecuciones de consultas . ver esta garantía de calidad: http://dba.stackexchange.com/questions/43772/why-dont-databases-create-the--own-own-indexes-automatically – Dai

3

En pocas palabras, prepara su base de datos para funcionar de manera efectiva. Al tener estadísticas preparadas, su base de datos sabe (antes de que tenga que descubrir un plan de ejecución) cuál es probablemente su ruta más eficiente.

2

Básicamente solo actualiza SQL con qué tipo de indexación tiene, recuento de filas, etc. Esto ayuda a SQL a estimar mejor cómo ejecutar sus consultas. Mantener las estadísticas actualizadas es algo bueno.

2

Desde el BOL ...

Crea un histograma y asociados grupos densidad (colecciones) sobre el columna suministrado o conjunto de columnas de una tabla o vista indizada. Resumen de cadenas estadísticas también se crean en estadísticas construidas en char, varchar, varchar (max), nchar, nvarchar, columnas nvarchar (max), text y ntext . El optimizador de consultas utiliza esta información estadística para elegir el plan más eficiente para recuperar o datos de actualización. Las estadísticas actualizadas permiten que el optimizador con precisión evalúe el costo de diferentes planes de consulta y elija un plan de alta calidad.

8

El optimizador usa las estadísticas para determinar si se usa un índice específico para su consulta. Sin estadísticas, el optimizador no tiene una forma de saber cuántas de sus filas coincidirán con una condición dada, lo que hace que tenga que optimizar para el caso de "muchas filas", que podría ser menos que óptimo.

Cuestiones relacionadas