postgresql优化心得之索引

0、使用explain工具检测sql语句执行时间和速度。

Explain (analyze,buffers) select * from tbl_tvwall_wnd where fl_tvwall_scene_id = 37 and fl_task_id = 0;

实际测试发现explain反馈的sql执行时间要比sql实际运行的时间要长一些,个人猜测是因为explain托管sql运行导致执行速度变慢。

1、索引:对于非主键的条件查询是比较慢的,针对比较固定的查询条件组合,可以考虑创建索引来提升查询速度。索引不仅可以用于查询,还可以用来update、delete。
创建联合索引:

create index index_tvwall_wnd_for_pane ON tbl_tvwall_pane(fl_tvwall_id,fl_tvwall_wnd_id);

删除索引

drop index index_tvwall_wnd_for_pane;

查看pgsql某张表中索引是否存在:

select relname, indexrelname from pg_stat_user_indexes where relname = 'tbl_tvwall_pane' and indexrelname = 'index_tvwall_wnd_for_pane';

查询结果:

     relname     |       indexrelname        
-----------------+---------------------------
 tbl_tvwall_pane | index_tvwall_wnd_for_pane

有时一些数据表会创建外键,这样删除数据时会影响删除速度,我们可以考虑在删除数据时暂时关闭外键,数据删除完毕后再开启外键。
postgresql的外键由触发器实现,故可以通过关闭数据表的触发器来关闭外键约束。

alter table tbl_tvwall_pane enable trigger all;
alter table tbl_tvwall_pane disable trigger all;

不过这种办法存在风险,当数据表存在多线程读写时可能会造成数据不一致,而且后续很难回溯,建议慎重使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值