Oracle 索引的使用情况查看
时间: 2023-12-21 08:16:07 浏览: 116
可以使用如下 SQL 查询语句查看 Oracle 数据库中索引的使用情况:
```
SELECT
t.table_name,
i.index_name,
i.index_type,
i.tablespace_name,
t.num_rows,
i.distinct_keys,
t.blocks,
i.leaf_blocks,
i.clustering_factor,
i.status,
i.last_analyzed,
to_char(s.sample_time, 'yyyy-mm-dd hh24:mi:ss') last_used_time,
s.user_reads,
s.user_calls,
s.user_io_wait_time,
s.index_stats
FROM
all_tables t
JOIN all_indexes i ON t.table_name = i.table_name
LEFT JOIN (
SELECT
object_name,
to_date(substr(max(sample_time), 1, 19), 'yyyy-mm-dd hh24:mi:ss') sample_time,
sum(user_reads) user_reads,
sum(user_calls) user_calls,
sum(user_io_wait_time) user_io_wait_time,
xmlagg(
xmlelement(
e,
to_char(column_name) || ':' || to_char(column_value)
)
).extract('//text()').getclobval() index_stats
FROM
v$object_usage
JOIN v$index_stats ON object_id = index_id
WHERE
object_type = 'INDEX'
GROUP BY
object_name
) s ON i.index_name = s.object_name
WHERE
t.owner = '<schema>'
AND i.owner = '<schema>'
ORDER BY
t.table_name,
i.index_name;
```
在上述 SQL 查询语句中,我们使用了 Oracle 数据字典的视图 all_tables 和 all_indexes,以及 v$object_usage 和 v$index_stats 视图,来获取索引的详细信息。其中,我们使用了 LEFT JOIN 来查询索引的最近使用时间和统计信息。如果索引从未使用过,则最近使用时间显示为 NULL。
阅读全文