sqlite.h


ANALYZE

Sintaxis ANALYZE
ANALYZE

La sentencia ANALYZE recoge estadísticas sobre los índices y los almacena en tabla especiales en la base de datos que el optimizador de consultas puede usar para mejorar la selección de índices. Si no se proporcionan argumentos, se analizan todos los índices en todas las bases de datos adjuntas. Si se proporciona un nombre de base de datos, se analizan todos los índices de esa base de datos. Si el argumento en un nombre de tabla, sólo se analizan los índices asociados a esa tabla.

La implementación por defecto almacena todas las estadísticas en una tabla sencilla llamada named sqlite_stat1. Si SQLite fue compilado con la opción SQLITE_ENABLE_STAT2, se recogen datos de histograma adicionales y se almacenan en sqlite_stat2. Mejoras futuras pueden crear tablas adicionales con el mismo patrón, pero sustituyendo el "1" o "2" por un dígito diferente.

La sentencia DROP TABLE no funciona para las tablas sqlite_stat1 o sqlite_stat2, pero todo el contenido de esas tablas puede consultarse usando SELECT y puede ser eliminado, aumentado o modificado usando las sentencias DELETE, INSERT y UPDATE. Se debe tener especial cuidado cuando se modifique el contenido de las tablas estadísticas, ya que un contenido inválido puede hacer que SQLite selecciones las consutas de forma ineficiente. Hablando en general, nunca se debería modificar el contenido de las tablas estadísticas mediante otro mecanismo que no sea la sentencia ANALYZE.

Las estadísticas recogidas por ANALYZE no se actualizan de forma automática cuando el contenido de la base de datos cambia. Si el contenido de la base de datos cambia significativamente, o si el esquema de la base de datos cambia, se debe considerar volver a ejecutar la sentencia ANALYZE con objeto de actualizar las estadísticas.