pgsql查询优化

1、大表不做数据转换

  假设a表是大表,b表是小表

a.id = cast(b.id as varchar)

2、distinct导致没用上索引

  删除distinct

 

3、exists

  查询语句,关联大表,但查询字段有不需要用到这个大表

  解决:把join去掉,改为exist,这样可以把记录数降下来

select a.id, a.name 
from a 
join b on a.id =b .id 
left join c on b.id = c.id 

 

 改为:

select a.id,a.name
from a 
left join c b.id = c.id 
and exists (select 1 from b.where a.id = b.id)

 

 优化思路

 (1)多表关联,找出大表;

(2)是不是需要返回大表查询字段;

 

4、每天都有记录生成的千万级别的表,根据时间范围查询

  时间字段加索引,能快很多;

  如果加了索引还是很慢,可以考虑加分区;

 

posted @   小王同学学编程  阅读(320)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
levels of contents
点击右上角即可分享
微信分享提示