📅  最后修改于: 2023-12-03 15:35:53.378000             🧑  作者: Mango
在进行 SQL 查询优化时,统计信息(包括表的大小、列的基数和索引的选择性等)对于评估查询计划非常重要。因此,Oracle 提供了一些工具来收集和管理表统计信息。
下面是一个 SQL,可以用来查看上次分析的 Oracle 表统计信息:
SELECT table_name, last_analyzed, num_rows, sample_size,
avg_row_len, num_blocks, empty_blocks, distinct_keys,
clustering_factor, num_rows / (distinct_keys + 1) AS density
FROM user_tables
WHERE table_name = 'table_name';
此 SQL 查询从用户表中获取有关特定表('table_name')的统计信息,包括上次分析的日期、行数、样本大小、平均行长度、块数、空块数、唯一键、聚集因子和密度。
在返回的结果中,您可能会注意到密度一列。这指的是行的选择性,它表示行中包含非空值的总数除以总行数与唯一键数之和的比率。密度值越高,选择性越低。对于具有低密度值的列,为其枚举或位图索引建立索引没有太多意义。
此外,如果统计信息已经过时或不存在,则它们需要使用 DBMS_STATS 包手动收集。
有关统计信息的更多信息,请参见 Oracle 文档 https://docs.oracle.com/database/121/TGSQL/toc.htm。
返回的markdown格式代码片段如下所示:
## 上次分析的 Oracle 表统计信息 - SQL
在进行 SQL 查询优化时,统计信息(包括表的大小、列的基数和索引的选择性等)对于评估查询计划非常重要。因此,Oracle 提供了一些工具来收集和管理表统计信息。
下面是一个 SQL,可以用来查看上次分析的 Oracle 表统计信息:
SELECT table_name, last_analyzed, num_rows, sample_size, avg_row_len, num_blocks, empty_blocks, distinct_keys, clustering_factor, num_rows / (distinct_keys + 1) AS density FROM user_tables WHERE table_name = 'table_name';
此 SQL 查询从用户表中获取有关特定表('table_name')的统计信息,包括上次分析的日期、行数、样本大小、平均行长度、块数、空块数、唯一键、聚集因子和密度。
在返回的结果中,您可能会注意到密度一列。这指的是行的选择性,它表示行中包含非空值的总数除以总行数与唯一键数之和的比率。密度值越高,选择性越低。对于具有低密度值的列,为其枚举或位图索引建立索引没有太多意义。
此外,如果统计信息已经过时或不存在,则它们需要使用 DBMS_STATS 包手动收集。
有关统计信息的更多信息,请参见 Oracle 文档 https://docs.oracle.com/database/121/TGSQL/toc.htm。