📜  上次分析的 oracle 表统计信息 - SQL (1)

📅  最后修改于: 2023-12-03 15:35:53.378000             🧑  作者: Mango

上次分析的 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。

返回的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。