PostgreSQL查询索引及字段详情(终极版)

news/2024/11/14 13:19:45/

PostgreSQL查询索引及字段详情(终极版)

  • PostgreSQL查询索引及字段详情(终极版)

PostgreSQL查询索引及字段详情(终极版)

-- PostgreSQL查询索引及字段详情(终极版)
with idx as (
select tc.relname as tablename  -- 表名,c.relname indexname      -- 对象名--,i.indkey--,array_length(i.indkey, 1) as array_length-- ,i.indkey[0] as field1,attr1.attname as field1-- ,i.indkey[1] as field2,attr2.attname as field2--,i.indkey[2] as field3,attr3.attname as field3--,i.indkey[3] as field4,attr4.attname as field4--,i.indkey[4] as field5,attr5.attname as field5--,i.indkey[5] as field6,attr6.attname as field6--,i.indkey[6] as field7,attr7.attname as field7-- ,i.* from pg_index ileft join pg_class con i.indexrelid = c.oidleft join pg_class tcon i.indrelid = tc.oidleft join pg_attribute attr1on attr1.attrelid = tc.oidand attr1.attnum = i.indkey[0]left join pg_attribute attr2on attr2.attrelid = tc.oidand attr2.attnum = i.indkey[1]left join pg_attribute attr3on attr3.attrelid = tc.oidand attr3.attnum = i.indkey[2]left join pg_attribute attr4on attr4.attrelid = tc.oidand attr4.attnum = i.indkey[3]left join pg_attribute attr5on attr5.attrelid = tc.oidand attr5.attnum = i.indkey[4]left join pg_attribute attr6on attr6.attrelid = tc.oidand attr6.attnum = i.indkey[5]left join pg_attribute attr7on attr7.attrelid = tc.oidand attr7.attnum = i.indkey[6]where tc.relname not like '%act\_%'and not tc.relname ~ '[0-9]{4}$'  -- 表名结尾不是4位数字的(不是备份表)and tc.relname not like '%\_other'and tc.relname not like '%\_others'and (tc.relname like '%\_t' or tc.relname like '%\_ti' or tc.relname like '%\_tmp')and tc.relowner = (select usesysid from pg_user where usename = CURRENT_SCHEMA)and indisunique = 't'  -- 唯一索引, 't' - 唯一索引;'f' - 普通索引。and indisprimary = 'f' -- 索引是唯一一个字段,是否是表的主键and c.relname not like '%\_pkey'
order by tablename,indexname
)
,idxs as (
select * from pg_indexeswhere schemaname = CURRENT_SCHEMAand indexdef like '%UNIQUE%'and tablename not like '%act\_%'and indexname not like '%\_pkey'
)
select idx.tablename,idx.indexname,idx.field1,idx.field2,idx.field3,idx.field4,idx.field5,idx.field6,idx.field7,case when position(' WHERE ' in idxs.indexdef)>0 then replace(replace(replace(substring(idxs.indexdef from (position(' WHERE ' in idxs.indexdef)+7) for length(idxs.indexdef)),'(',''),')',''),'::text','')else nullend as where_condition,idxs.indexdeffrom idxleft join idxson idx.indexname = idxs.indexname
;

http://www.ppmy.cn/news/1004441.html

相关文章

freeswitch的mod_xml_curl模块动态获取dialplan

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 mod_xml_curl模块支持从web服务获取xml配置,本文介绍如何动态获取dialplan配置。 环境 centos:CentOS release 7.0 (Final)或以上版本 freeswitch:v1.6.20 GCC:4.8.5…

2023-08-04 LeetCode每日一题(不同路径 III)

2023-08-04每日一题 一、题目编号 980. 不同路径 III二、题目链接 点击跳转到题目位置 三、题目描述 在二维网格 grid 上,有 4 种类型的方格: 1 表示起始方格。且只有一个起始方格。2 表示结束方格,且只有一个结束方格。0 表示我们可以…

案例|会展大数据服务系统 智能服务体系建设实践

根据相关的市场调查发现在国内进行的2000多个会展项目中,仅有15%的项目能够提供相关主题网站基本业务和服务,且提供的服务并不能够满足会展各方的应用,剩余的大部门会展项目信息系统构建的不够完善、技术性差、应用复杂等,甚至提供…

正则表达式学习记录(Python)

正则表达式学习记录(Python) 一、特殊符号和字符 多个正则表达式匹配 ( | ) 用来分隔不同的匹配模式,相当于逻辑或,可以符合其中任何一个正则表达式 at | home # 表示匹配at或者home bat | bet | bit # 表示匹配bat或…

6.如何用CSV文件生成异构图数据集

我们将使用GroupLens研究小组收集的MovieLens数据集。 这个数据集描述了MovieLens的五星评级和标记活动。该数据集包含来自600多名用户的9000多部电影的约10万个评分。我们将使用该数据集生成两种节点类型,分别保存电影和用户的数据,以及一种连接…

Shell脚本学习-Shell脚本框架

我们能写出.sh文件的脚本。已经觉得很好了。但是我们还需要进一步学习脚本框架的概念。 1、Shell脚本(模块)高级命名规则: 1)常规Shell脚本:chang.sh、test.sh等 2)模块的启动和停止统一命名为&#xff1…

Qt5.13引入QtWebApp的模块后报错: error C2440: “reinterpret_cast”: 无法从“int”转换为“quintptr”

1、开发环境 Win10-64 qt5.13 msvc2015-64bit-release 2、报错 新建一个demo工程。 引入QtWebApp的httpserver、logging、templateengine三个模块后。 直接运行,,此时报错如下: E:\Qt5.13.1\install\5.13.1\msvc2015_64\include\QtCore…

互联网——根服务器

说明 根服务器是互联网域名系统(DNS)中最高级别的服务器之一。它们负责管理整个DNS系统的顶级域名空间,例如.com、.org和.net等。 根服务器的主要功能是将用户的DNS查询转发到适当的顶级域名服务器。当用户在浏览器中输入一个域名&#xff…