¿Qué hace" Crear estadísticas " en SQL Server 2005?


El Asesor de Ajuste de la base de datos recomienda que cree un montón de estadísticas en mi Base de datos. Soy una especie de SQL n00b, así que esta fue la primera vez que me encontré con una criatura así. La entrada en MSDN era un poco obtusa - ¿podría alguien explicar qué hace exactamente esto, y por qué es una buena idea?

Author: Alex KeySmith, 2008-09-24

5 answers

La optimización de consultas basada en costos es una técnica que utiliza histogramas y recuentos de filas para estimar heurísticamente el costo de ejecutar un plan de consultas. Cuando envía una consulta a SQL Server, la evalúa y genera una serie de Planes de consulta para los que utiliza heurística para estimar los costos. A continuación, selecciona el plan de consulta más barato.

Las estadísticas son utilizadas por el optimizador de consultas para calcular el costo de los planes de consultas. Si las estadísticas faltan o están fuera de fecha no tiene datos correctos para estimar el plan. En este caso, puede generar planes de consulta que son moderada o altamente subóptimos.

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

 38
Author: ConcernedOfTunbridgeWells,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-24 16:58:53

Las estadísticas son utilizadas por el optimizador para determinar si se debe usar un índice específico para su consulta. Sin estadísticas, el optimizador no tiene una manera 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.

 8
Author: Jonathan Rupp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-24 16:21:44

En pocas palabras, prepara tu base de datos para que funcione eficazmente. Al tener estadísticas preparadas, su base de datos sabe (antes de que necesite averiguar un plan de ejecución) cuál es probablemente su ruta más eficiente.

 3
Author: nathaniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-24 16:16:12

Básicamente solo mantiene SQL actualizado 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
Author: Kevin Fairchild,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-24 16:16:15

Del BOL...

Crea un histograma y asociado grupos de densidad (colecciones) sobre columna o conjunto de columnas de un tabla o vista indexada. Resumen de cadenas también se crean estadísticas sobre estadísticas basadas en char, varchar, varchar (max), nchar, nvarchar, nvarchar (max), texto y ntext columna. El optimizador de consultas utiliza esto información estadística para elegir el plan más eficiente para recuperar o actualización de datos. Estadísticas actualizadas permitir que el optimizador para con precisión evaluar el costo de diferentes consultas planes, y elegir un plan de alta calidad.

 2
Author: Galwegian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-24 16:16:18