数据库之查询优化

(1) 来自pg文档 

   PostgreSQL使用的是基于成本的优化器(Cost based optimizer)。理论上基于成本的优化器会计算用户输入的查询语句的每个合法的查询计划的执行成本,然后从中选择成本最小的计划作为执行查询语句的最终计划。在实际应用中,查询语句的合法的查询计划的个数是随查询复杂度的增加呈指数增长的。对于过于复杂的查询,如果遍历每个合法的查询计划,将会消耗掉大量的时间,这是不能被用户接受的,所以优化器不会遍历每个合法的查询计划,只会选择一部分查询计划,从中找到执行成本最小的计划。


(2)调整QL查询计划   
在oracle中使用hint可以调整SQL的执行计划,
在postgresql可以使用如下的方法进行调整  
使用set<option> to off/on;调整查询计划,参数如下: 
enable_seqscan是否走全表扫描 
enable_hashjoin是否允许走hash连接  
enable_nestloop是否允许走nestloop连接  
enable_mergejoin是否允许走合并连接  
enable_tidscan是否允许走tid扫描(类似oracle中的按rowid访问)  
enable_bitmapscan是否允许走bitmap扫描   
enable_hashagg是否允许走hash聚集(也就是做group by时)  
enable_indexscan是否允许走索引 
enable_sort是否允许走排序 
constraint_exclusion是否允许走分区 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值