PostgreSQL查看索引的使用情况

--==========================================
--查看索引的使用情况
--索引在重建或删除新建时sys.dm_db_index_usage_stats中相关的数据会被清除
--索引在重整是不会清除sys.dm_db_index_usage_stats的数据
SELECT  DB_NAME(ixu.database_id) DataBase_Name ,
        OBJECT_NAME(ixu.object_id) Table_Name ,
        ix.name Index_Name ,
        ( SELECT    MAX(s.rows)
          FROM      sysindexes s
          WHERE     s.id = ixu.object_id
        ) AS Table_Rows ,
        STATS_DATE(ixu.object_id, ixu.index_id) AS statistic_time ,
        ixu.user_updates ,
        ixu.last_user_update ,
        ixu.last_user_seek ,
        ixu.user_seeks ,
        ixu.last_user_scan ,
        ixu.user_scans ,
        ixu.last_user_lookup ,
        ixu.user_lookups ,
        ixu.user_updates / ( ISNULL(ixu.user_seeks, 0) + ISNULL(ixu.user_scans,
                                                              0) + 1 ) AS UseRate
FROM    sys.dm_db_index_usage_stats ixu
        INNER JOIN sys.indexes ix
        ON ixu.object_id = ix.object_id
           AND ixu.index_id = ix.index_id
        INNER JOIN sys.objects ob
        ON ixu.object_id = ob.object_id
WHERE   ob.type = ‘U‘
        AND ob.is_ms_shipped = 0
        AND ixu.database_id = DB_ID()
--AND ix.object_id=OBJECT_ID(‘TableName‘)

存放索引详细信息的表

data_name=# \d+ pg_stat_user_indexes;
           View "pg_catalog.pg_stat_user_indexes"
    Column     |  Type  | Modifiers | Storage | Description
---------------+--------+-----------+---------+-------------
 relid         | oid |           | plain |
 indexrelid    | oid |           | plain |
 schemaname    | name |           | plain |
 relname       | name |           | plain |
 indexrelname  | name |           | plain |
 idx_scan      | bigint |           | plain |
 idx_tup_read  | bigint |           | plain |
 idx_tup_fetch | bigint |           | plain |
View definition:
 SELECT pg_stat_all_indexes.relid,
    pg_stat_all_indexes.indexrelid,
    pg_stat_all_indexes.schemaname,
    pg_stat_all_indexes.relname,
    pg_stat_all_indexes.indexrelname,
    pg_stat_all_indexes.idx_scan,
    pg_stat_all_indexes.idx_tup_read,
    pg_stat_all_indexes.idx_tup_fetch
   FROM pg_stat_all_indexes
  WHERE (pg_stat_all_indexes.schemaname <> ALL (ARRAY[‘pg_catalog‘::name, ‘information_schema‘::name])) AND pg_stat_all_indexes.schemaname !~ ‘^pg_toast‘::text;

通过这个表查看某个表的索引使用情况易如反掌了。

示例一、查看所有表的索引的使用情况

select relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch from pg_stat_user_indexes order by idx_scan asc, idx_tup_read asc, idx_tup_fetch asc;

示例二、查看某个表的索引使用情况

select relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch from pg_stat_user_indexes where relname = table_name order by idx_scan asc, idx_tup_read asc, idx_tup_fetch asc;

原文地址:https://www.cnblogs.com/ryanzheng/p/9756329.html

时间: 2024-08-29 08:41:29

PostgreSQL查看索引的使用情况的相关文章

postgresql —— 查看索引

语句: SELECT tablename, indexname, indexdef FROM pg_indexes WHERE tablename = 'user_tbl' ORDER BY tablename, indexname; 233 原文地址:https://www.cnblogs.com/lemos/p/11616000.html

利用sys.dm_db_index_physical_stats查看索引大小/碎片等信息

我们都知道,提高sql server的数据查询速度,最有效的方法,就是为表创建索引,而我们对数据表进行新增,删除,修改的时候,会产生索引碎片,索引碎片多了,对性能产生很大的影响,索引碎片越多对数据库查询的性能影响就越大,这时我们就需要对索引重新组织或重新生成,以达到索引的最大效率. www.2cto.com    在sqlserver中索引碎片的大小是以百分比来体现的,如果索引碎片的百分比大于30%以上,就会对影响查询的性能.这时候我们就需要对该索引进行重新组织或重新生成了,重新组织或重新生成之

学习MongoDB--(5-2):索引(查看索引的使用,管理索引)

前一篇简单介绍了索引,并给出了基本的索引使用,这一次,我们进一步说一下MongoDB中的索引,包括如何查看查询是否走索引,如何管理索引和地理空间索引等. [使用explain和hint] 前面讲高级查询选项时,提到过"$explain" 和 ”$hint“可以作为包装查询的选项关键字使用,其实这两个本身就可以作为操作游标的函数调用!游标调用explain函数会返回一个文档,用于描述当 前查询的一些细节信息.这也不同于我们前面介绍的游标函数,前面提到的游标处理函数都是返回游标,可组成方法

利用sys.dm_db_index_physical_stats查看索引碎片等数据(转)

我们都知道,提高sql server的数据查询速度,最有效的方法,就是为表创建索引,而索引在对数据进行新增,删除,修改的时候,会产生索引碎片,索引碎片多了,就需要重新组织或重新生成索引,以达到索引的最大效率. 那么我们要如何知道索引的碎片大小呢?在sql server中,碎片的大小是使用碎片比来体现的,按msdn上面的说法,如果碎片比小于30%,我们可以重新组织索引,如果碎片比大于等于30%,我们可以选择重新生成索引. 那么我们在那里可以查看到碎片比呢?最简单的就是在microsoft sql 

sqlserver查看索引使用情况以及建立丢失的索引

--查看表的索引使用情况SELECT TOP 1000o.name AS 表名, i.name AS 索引名, i.index_id AS 索引id, dm_ius.user_seeks AS 搜索次数, dm_ius.user_scans AS 扫描次数, dm_ius.user_lookups AS 查找次数, dm_ius.user_updates AS 更新次数, p.TableRows as 表行数, 'DROP INDEX ' + QUOTENAME(i.name)+ ' ON '

mysql如何查看索引使用情况以及优化 - guols0612

mysql中支持hash和btree索引.innodb和myisam只支持btree索引,而memory和heap存储引擎可以支持hash和btree索引 我们可以通过下面语句查询当前索引使用情况: show status like '%Handler_read%'; +-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| Handler_read_first | 0

【基本优化实践】【1.2】索引优化——查看堆表、查看索引使用情况、查看索引碎片率

[1]查看堆表 --查看堆表且行大于等于10W的 select * from ( SELECT tables.NAME, (SELECT rows FROM sys.partitions WHERE object_id = tables.object_id AND index_id = 0 -- 0 is for heap -- 1 is for clustered index And rows >=100000 )AS numberofrows FROM db_tank.sys.tables

浅谈PostgreSQL的索引

1. 索引的特性 1.1 加快条件的检索的特性 当表数据量越来越大时查询速度会下降,在表的条件字段上使用索引,快速定位到可能满足条件的记录,不需要遍历所有记录. create table t(id int, info text); insert into t select generate_series(1,10000),'lottu'||generate_series(1,10000); create table t1 as select * from t; create table t2 a

(转)浅谈PostgreSQL的索引

1. 索引的特性 1.1 加快条件的检索的特性 当表数据量越来越大时查询速度会下降,在表的条件字段上使用索引,快速定位到可能满足条件的记录,不需要遍历所有记录. create table t(id int, info text); insert into t select generate_series(1,10000),'lottu'||generate_series(1,10000); create table t1 as select * from t; create table t2 a