ANALYZE
Actualiza las estadísticas de la tabla para que el planificador de consultas las utilice.
Privilegios necesarios
Los siguientes privilegios son necesarios para ANALYZE:
Superusuario
Usuarios con el privilegio ANALYZE
Propietario de la relación
Propietario de la base de datos con quien se comparte la tabla
Sintaxis
ANALYZE [ VERBOSE ] [ [ table_name [ ( column_name [, ...] ) ] ] [ PREDICATE COLUMNS | ALL COLUMNS ]
Parámetros
- VERBOSE
-
Una cláusula que devuelve mensajes de información de progreso acerca de la operación ANALYZE. Esta opción es útil cuando no se especifica una tabla.
- table_name
-
Puede analizar tablas específicas, incluidas tablas temporales. Puede completar la tabla con el nombre de su esquema. Si lo desea, puede especificar un table_name (nombre_de_tabla) para analizar una única tabla. No puede especificar más de un table_name (nombre_de_tabla) con una única instrucción ANALYZE table_name (nombre_de_tabla). Si no se especifica un valor table_name, se analizan todas las tablas de la base de datos actualmente conectada, incluidas las tablas persistentes en el catálogo del sistema. Amazon Redshift omite el análisis de una tabla si el porcentaje de filas que se han modificado desde la última operación ANALYZE es inferior al límite de análisis. Para obtener más información, consulte Umbral de análisis.
No necesita analizar las tablas de sistema de Amazon Redshift (tablas STL y STV).
- column_name
-
Si especifica un valor table_name (nombre_de_tabla), también puede especificar una o varias columnas de la tabla (como una lista de valores separados por columnas entre paréntesis). Si se especifica una lista de columnas, solo se analizarán las columnas que aparecen en la lista.
- PREDICATE COLUMNS | ALL COLUMNS
-
Se trata de cláusulas que indican si ANALYZE debe incluir solo columnas de predicados. Especifique PREDICATE COLUMNS para analizar solamente las columnas utilizadas como predicados en consultas anteriores o que sean posibles candidatas para utilizarse como predicados. Especifique ALL COLUMNS para analizar todas las columnas. El valor predeterminado es ALL COLUMNS.
Se incluye una columna en el conjunto de columnas de predicados si cualquiera de los siguientes es verdadero:
-
La columna ha sido utilizada en una consulta como parte de un filtro, una condición de combinación o una cláusula de agrupación.
-
La columna es una clave de distribución.
-
La columna forma parte de una clave de ordenación.
Si no se marca ninguna columna como columna de predicado, por ejemplo porque la tabla aún no se ha consultado, se analizan todas las columnas incluso si PREDICATE COLUMNS está especificado. Cuando esto sucede, Amazon Redshift podría responder con un mensaje similar a
No se han encontrado columnas de predicado para “
. Para obtener más información acerca de las columnas de predicados, consulte Análisis de tablas.nombre-de-tabla
”. Analizando todas las columnas -
Notas de uso
Amazon Redshift ejecuta ANALYZE de manera automática en las tablas que usted crea con los siguientes comandos:
-
CREATE TABLE AS
-
CREATE TEMP TABLE AS
-
SELECT INTO
No puede analizar una tabla externa.
No es necesario ejecutar el comando ANALYZE en estas tablas cuando se crean por primera vez. Si las modifica, debe analizarlas de la misma manera en que analiza las demás tablas.
Umbral de análisis
Para reducir el tiempo de procesamiento y mejorar el rendimiento general del sistema, Amazon Redshift omite la operación ANALYZE en una tabla si el porcentaje de filas que se han modificado desde que se ejecutó el comando ANALYZE por última vez es inferior al límite de análisis especificado por el parámetro analyze_threshold_percent. Por defecto, analyze_threshold_percent
es 10. Si desea cambiar analyze_threshold_percent
para la sesión actual, ejecute el comando SET. En el siguiente ejemplo, se cambia analyze_threshold_percent
a 20 por ciento.
set analyze_threshold_percent to 20;
Para analizar las tablas cuando solo han cambiado unas pocas filas, establezca analyze_threshold_percent
en un número pequeño elegido arbitrariamente. Por ejemplo, si establece analyze_threshold_percent
como 0,01, las tablas con 100 000 000 filas no se omitirán si se han modificado al menos 10 000 filas.
set analyze_threshold_percent to 0.01;
Si ANALYZE omite una tabla porque no cumple con el umbral de análisis, Amazon Redshift devuelve el siguiente mensaje.
ANALYZE SKIP
Para analizar todas las tablas, aunque no haya cambiado ninguna fila, establezca analyze_threshold_percent
en 0.
Para ver los resultados de las operaciones ANALYZE, consulte la tabla del sistema STL_ANALYZE.
Para obtener más información acerca del análisis de tablas, consulte Análisis de tablas.
Ejemplos
Analiza todas las tablas de la base de datos TICKIT y devolver la información de progreso.
analyze verbose;
Analiza solo la tabla LISTING.
analyze listing;
Analiza las columnas VENUEID y VENUENAME de la tabla VENUE.
analyze venue(venueid, venuename);
Analiza solo columnas de predicado de la tabla VENUE.
analyze venue predicate columns;