首页 > 数据库 >pg数据库查找外键但没有索引的sql

pg数据库查找外键但没有索引的sql

时间:2023-04-07 09:45:33浏览次数:40  
标签:index column 外键 class pg sql conrelid array

SELECT pg_index.indexrelid::regclass, 'create index ' || relname || '_' ||
array_to_string(column_name_list, '_') || '_idx on ' || conrelid ||
' (' || array_to_string(column_name_list, ',') || ')'
FROM (SELECT DISTINCT
conrelid,
array_agg(attname) column_name_list,
array_agg(attnum) AS column_list
FROM pg_attribute
JOIN (SELECT conrelid::regclass,
conname,
unnest(conkey) AS column_index
FROM (SELECT DISTINCT
conrelid, conname, conkey
FROM pg_constraint
JOIN pg_class ON pg_class.oid = pg_constraint.conrelid
JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
WHERE nspname !~ '^pg_' AND nspname <> 'information_schema'
) fkey
) fkey
ON fkey.conrelid = pg_attribute.attrelid
AND fkey.column_index = pg_attribute.attnum
GROUP BY conrelid, conname
) candidate_index
JOIN pg_class ON pg_class.oid = candidate_index.conrelid
LEFT JOIN pg_index ON pg_index.indrelid = conrelid
AND indkey::text = array_to_string(column_list, ' ')
WHERE indexrelid IS NULL

标签:index,column,外键,class,pg,sql,conrelid,array
From: https://www.cnblogs.com/chinadba/p/17294951.html

相关文章

  • 力扣1045(MySQL)-买下所有产品的客户(中等)
    题目:Customer 表: Product 表:写一条SQL查询语句,从 Customer 表中查询购买了 Product 表中所有产品的客户的id。示例:  解题思路:建表语句:1createtableifnotexistscustomer_1045(customer_idint(3)notnull,product_keyint(3));2createtableif......
  • 力扣627(MySQL)-变更性别(简单)
    题目:Salary 表:请你编写一个SQL查询来交换所有的'f'和'm'(即,将所有'f'变为'm',反之亦然),仅使用单个update语句,且不产生中间临时表。注意,你必须仅使用一条update语句,且不能使用select语句。查询结果如下例所示。示例1: 来源:力扣(LeetCode)链接:https://leet......
  • 【性能优化】优雅地优化慢查询:缓存+SQL修改组合拳
    问题描述单例数据库模式中,后端高并发请求多(读多写少),导致数据库压力过大,关键接口响应变慢,严重影响体验。需求减少接口的响应时间。寻找解决方案由于问题主要处在数据库压力过大的情况,采用两种优化思路优化查询过程:使用缓存分担数据库压力对查询数据库过程做优化缓存方案......
  • JumpGame
    packageDynamicPlanning;/***55.跳跃游戏*给定一个非负整数数组nums,你最初位于数组的第一个下标。*数组中的每个元素代表你在该位置可以跳跃的最大长度。*判断你是否能够到达最后一个下标。*//***设想一下,对于数组中的任意一个位置y,我们如何判断它是......
  • Mybatis-动态SQL案例
    案例根据非id两个字段删除voiddeleteBatchRelation(@Param("entites")List<AttrAttrgroupRelationEntity>entites);<deleteid="deleteBatchRelation">deletefrompms_attr_attrgroup_relationwhere--遍历循环删除itemseparator是......
  • MYSQL基础知识之多表查询
    1、多表关系在数据表中,各个表结构之间存在着各种关系(一对一、一对多、多对多)。一对一关系:示例:学生与学生详情的关系,一个学生对应一个详细情况,一个详细情况对应一个学生。实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的UNIQUE。一对多关系:示例:学生与班级的关......
  • Python ORM Pony SQLite数据库 常用操作
    Pony是一个高级的对象关系映射器ORM框架。Pony它能够使用Python生成器表达式和lambdas向数据库编写查询。Pony分析表达式的抽象语法树,并将其转换为SQL查询。支持SQLite,MySQL,PostgreSQL和Oracle等数据库,本文主要介绍PythonORMPony中SQLite数据库常用操作,及数据增加、删除、修......
  • 二。docker安装mysql 并配置
    1.docker安装mysql1.1使用docker拉取mysql的镜像dockerpullmysql:5.71.2通过镜像启动dockerrun-p3306:3306--namemymysql-v$PWD/conf:/etc/mysql/conf.d-v$PWD/logs:/logs-v$PWD/data:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456-dmysql:5.7-p3306:3306:......
  • MYSQL数据库误赋权引发的血案
    赋权操作是DB最常规操作,只增加一个赋权,这都有坑吗?帮同事处理mysql赋权引发的故障案例,有代表性,避坑!!! 11:03 接到求助,系统完全打不开了。信息获取。Q1:哪个系统?xxx系统。Q2:什么报错?Access denied by for user ‘pqc_doa_up’@’172.26.154.68’(using password:YES)Q3......
  • 会话管理机制&SQL注入攻击
    会话管理机制1.绝大多数Web应用程序中,会话管理机制是一个基本的安全组件2.会话管理在应用程序执行登录功能时显得特别重要3.因为,它可再用户通过请求提交他们的证书后,持续向应用程序保证任何特定用户身份的真实性4.由于会话管理机制所发挥的关键作用,他们成为针......