ITPub博客

首页 > 数据库 > Oracle > 数据库之查询优化

数据库之查询优化

Oracle 作者:spasvo 时间:2016-10-28 15:35:06 0 删除 编辑

  (1) 来自pg文档
  PostgreSQL使用的是基于成本的优化器(Cost based optimizer)。理论上基于成本的优化器会计算用户输入的查询语句的每个合法的查询计划的执行成本,然后从中选择成本最小的计划作为执行查询语句的 最终计划。在实际应用中,查询语句的合法的查询计划的个数是随查询复杂度的增加呈指数增长的。对于过于复杂的查询,如果遍历每个合法的查询计划,将会消耗 掉大量的时间,这是不能被用户接受的,所以优化器不会遍历每个合法的查询计划,只会选择一部分查询计划,从中找到执行成本最小的计划。
  (2)调整QL查询计划
  在oracle中使用hint可以调整SQL的执行计划,
  在postgresql可以使用如下的方法进行调整
  使用set 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是否允许走分区

本文转自:http://www.spasvo.com/news/html/20131220102647.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29379530/viewspace-2127286/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-12-11

  • 博文量
    40
  • 访问量
    30384