pg SQL查询优化经历

1.大表不做数据转换

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

and a.sender=cast(d.staff_id as varchar)

改成:

and cast(a.sender as numeric)=d.staff_id

2. distinct导致没用上索引

修改:删除distinct

3.视图查询慢

视图里面查询了太多东西改成查视图里面的源表,取我们需要的字段

比如视图里面有很多子查询,但我们不需要那么多字段。

4. 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 on b.id = c.id
and exists( select 1 from b where a.id=b.id)

优化思路:想办法把记录数降下来

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

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

(3)exists真是个好东西

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

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

2千万以上,如果加了索引还很慢,就需要考虑加分区。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值