pgSQL查询优化经历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只在理论中背过?
sql优化的几种方式
查询语句 关联⼤表,但查询字段⼜不需要⽤到这个⼤表的
解决:把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千万以上,如果加了索引还很慢,就需要考虑加分区。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论