分析表
描述
ANALYZE TABLE
语句收集有关一个特定表或一个指定数据库中所有表的统计信息,查询优化器将使用这些统计信息来查找更好的查询执行计划。
语法
ANALYZE TABLE table_identifier [ partition_spec ]
COMPUTE STATISTICS [ NOSCAN | FOR COLUMNS col [ , ... ] | FOR ALL COLUMNS ]
ANALYZE TABLES [ { FROM | IN } database_name ] COMPUTE STATISTICS [ NOSCAN ]
参数
-
表标识符
指定表名,可以选择使用数据库名称进行限定。
语法:
[ 数据库名称. ] 表名
-
分区规范
一个可选参数,用于指定分区键值对的逗号分隔列表。指定后,将返回分区统计信息。
语法:
PARTITION ( 分区列名 [ = 分区列值 ] [ , ... ] )
-
{ FROM
|
IN } 数据库名称指定要分析的数据库的名称。如果没有数据库名称,
ANALYZE
将收集当前数据库中当前用户有权分析的所有表。 -
NOSCAN
仅收集表的字节大小(不需要扫描整个表)。
-
FOR COLUMNS 列 [ , … ]
|
FOR ALL COLUMNS收集每个指定列或所有列的列统计信息,以及表统计信息。
如果未指定分析选项,则会收集行数和字节大小。
示例
CREATE DATABASE school_db;
USE school_db;
CREATE TABLE teachers (name STRING, teacher_id INT);
INSERT INTO teachers VALUES ('Tom', 1), ('Jerry', 2);
CREATE TABLE students (name STRING, student_id INT) PARTITIONED BY (student_id);
INSERT INTO students VALUES ('Mark', 111111), ('John', 222222);
ANALYZE TABLE students COMPUTE STATISTICS NOSCAN;
DESC EXTENDED students;
+--------------------+--------------------+-------+
| col_name| data_type|comment|
+--------------------+--------------------+-------+
| name| string| null|
| student_id| int| null|
| ...| ...| ...|
| Statistics| 864 bytes| |
| ...| ...| ...|
+--------------------+--------------------+-------+
ANALYZE TABLE students COMPUTE STATISTICS;
DESC EXTENDED students;
+--------------------+--------------------+-------+
| col_name| data_type|comment|
+--------------------+--------------------+-------+
| name| string| null|
| student_id| int| null|
| ...| ...| ...|
| Statistics| 864 bytes, 2 rows| |
| ...| ...| ...|
+--------------------+--------------------+-------+
ANALYZE TABLE students PARTITION (student_id = 111111) COMPUTE STATISTICS;
DESC EXTENDED students PARTITION (student_id = 111111);
+--------------------+--------------------+-------+
| col_name| data_type|comment|
+--------------------+--------------------+-------+
| name| string| null|
| student_id| int| null|
| ...| ...| ...|
|Partition Statistics| 432 bytes, 1 rows| |
| ...| ...| ...|
+--------------------+--------------------+-------+
ANALYZE TABLE students COMPUTE STATISTICS FOR COLUMNS name;
DESC EXTENDED students name;
+--------------+----------+
| info_name|info_value|
+--------------+----------+
| col_name| name|
| data_type| string|
| comment| NULL|
| min| NULL|
| max| NULL|
| num_nulls| 0|
|distinct_count| 2|
| avg_col_len| 4|
| max_col_len| 4|
| histogram| NULL|
+--------------+----------+
ANALYZE TABLES IN school_db COMPUTE STATISTICS NOSCAN;
DESC EXTENDED teachers;
+--------------------+--------------------+-------+
| col_name| data_type|comment|
+--------------------+--------------------+-------+
| name| string| null|
| teacher_id| int| null|
| ...| ...| ...|
| Statistics| 1382 bytes| |
| ...| ...| ...|
+--------------------+--------------------+-------+
DESC EXTENDED students;
+--------------------+--------------------+-------+
| col_name| data_type|comment|
+--------------------+--------------------+-------+
| name| string| null|
| student_id| int| null|
| ...| ...| ...|
| Statistics| 864 bytes| |
| ...| ...| ...|
+--------------------+--------------------+-------+
ANALYZE TABLES COMPUTE STATISTICS;
DESC EXTENDED teachers;
+--------------------+--------------------+-------+
| col_name| data_type|comment|
+--------------------+--------------------+-------+
| name| string| null|
| teacher_id| int| null|
| ...| ...| ...|
| Statistics| 1382 bytes, 2 rows| |
| ...| ...| ...|
+--------------------+--------------------+-------+
DESC EXTENDED students;
+--------------------+--------------------+-------+
| col_name| data_type|comment|
+--------------------+--------------------+-------+
| name| string| null|
| student_id| int| null|
| ...| ...| ...|
| Statistics| 864 bytes, 2 rows| |
| ...| ...| ...|
+--------------------+--------------------+-------+