d07fc3076b
### What changes were proposed in this pull request? This pr add support analyze all tables in a specific database: ```g4 ANALYZE TABLES ((FROM | IN) multipartIdentifier)? COMPUTE STATISTICS (identifier)? ``` ### Why are the changes needed? 1. Make it easy to analyze all tables in a specific database. 2. PostgreSQL has a similar implementation: https://www.postgresql.org/docs/12/sql-analyze.html. ### Does this PR introduce _any_ user-facing change? No. ### How was this patch tested? The feature tested by unit test. The documentation tested by regenerating the documentation: menu-sql.yaml | sql-ref-syntax-aux-analyze-tables.md -- | -- ![image](https://user-images.githubusercontent.com/5399861/109098769-dc33a200-775c-11eb-86b1-55531e5425e0.png) | ![image](https://user-images.githubusercontent.com/5399861/109098841-02594200-775d-11eb-8588-de8da97ec94a.png) Closes #30648 from wangyum/SPARK-33687. Authored-by: Yuming Wang <yumwang@ebay.com> Signed-off-by: Takeshi Yamamuro <yamamuro@apache.org>
111 lines
4.1 KiB
Markdown
111 lines
4.1 KiB
Markdown
---
|
|
layout: global
|
|
title: ANALYZE TABLES
|
|
displayTitle: ANALYZE TABLES
|
|
license: |
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
---
|
|
|
|
### Description
|
|
|
|
The `ANALYZE TABLES` statement collects statistics about all the tables in a specified database to be used by the query optimizer to find a better query execution plan.
|
|
|
|
### Syntax
|
|
|
|
```sql
|
|
ANALYZE TABLES [ { FROM | IN } database_name ] COMPUTE STATISTICS [ NOSCAN ]
|
|
```
|
|
|
|
### Parameters
|
|
|
|
* **{ FROM `|` IN } database_name**
|
|
|
|
Specifies the name of the database to be analyzed. Without a database name, `ANALYZE` collects all tables in the current database that the current user has permission to analyze.
|
|
|
|
* **[ NOSCAN ]**
|
|
|
|
Collects only the table's size in bytes (which does not require scanning the entire table).
|
|
|
|
### Examples
|
|
|
|
```sql
|
|
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, age SHORT);
|
|
INSERT INTO students VALUES ('Mark', 111111, 10), ('John', 222222, 11);
|
|
|
|
ANALYZE TABLES IN school_db COMPUTE STATISTICS NOSCAN;
|
|
|
|
DESC EXTENDED teachers;
|
|
+--------------------+--------------------+-------+
|
|
| col_name| data_type|comment|
|
|
+--------------------+--------------------+-------+
|
|
| name| string| null|
|
|
| teacher_id| int| null|
|
|
| ...| ...| ...|
|
|
| Provider| parquet| |
|
|
| Statistics| 1382 bytes| |
|
|
| ...| ...| ...|
|
|
+--------------------+--------------------+-------+
|
|
|
|
DESC EXTENDED students;
|
|
+--------------------+--------------------+-------+
|
|
| col_name| data_type|comment|
|
|
+--------------------+--------------------+-------+
|
|
| name| string| null|
|
|
| student_id| int| null|
|
|
| age| smallint| null|
|
|
| ...| ...| ...|
|
|
| Statistics| 1828 bytes| |
|
|
| ...| ...| ...|
|
|
+--------------------+--------------------+-------+
|
|
|
|
ANALYZE TABLES COMPUTE STATISTICS;
|
|
|
|
DESC EXTENDED teachers;
|
|
+--------------------+--------------------+-------+
|
|
| col_name| data_type|comment|
|
|
+--------------------+--------------------+-------+
|
|
| name| string| null|
|
|
| teacher_id| int| null|
|
|
| ...| ...| ...|
|
|
| Provider| parquet| |
|
|
| Statistics| 1382 bytes, 2 rows| |
|
|
| ...| ...| ...|
|
|
+--------------------+--------------------+-------+
|
|
|
|
DESC EXTENDED students;
|
|
+--------------------+--------------------+-------+
|
|
| col_name| data_type|comment|
|
|
+--------------------+--------------------+-------+
|
|
| name| string| null|
|
|
| student_id| int| null|
|
|
| age| smallint| null|
|
|
| ...| ...| ...|
|
|
| Provider| parquet| |
|
|
| Statistics| 1828 bytes, 2 rows| |
|
|
| ...| ...| ...|
|
|
+--------------------+--------------------+-------+
|
|
```
|
|
|
|
### Related Statements
|
|
|
|
* [ANALYZE TABLE](sql-ref-syntax-aux-analyze-table.html)
|