pgsql查询优化

发布时间 2023-05-04 15:35:38作者: 小王同学学编程

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、每天都有记录生成的千万级别的表,根据时间范围查询

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

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