当前位置:  开发笔记 > 数据库 > 正文

将enable_nestloop设置为OFF有什么缺陷

如何解决《将enable_nestloop设置为OFF有什么缺陷》经验,为你挑选了1个好方法。

我的应用程序中有一个查询,当我的表中有大量行时,它运行得非常快.但是当行数是中等大小(既不大也不小)时 - 相同的查询运行速度要慢15倍.

解释计划显示对中型数据集的查询使用嵌套循环作为其连接算法.大数据集使用散列连接.

我可以阻止查询规划器在数据库级别(postgresql.conf)或每个session(SET enable_nestloop TO off)使用嵌套循环.

有哪些潜在的陷阱set enable_nestloop to off

其他信息:PostgreSQL 8.2.6,在Windows上运行.



1> Quassnoi..:

什么是设置的潜在陷阱enable_nestloopoff

这意味着您永远无法有效地使用索引.

而且你好像现在都不使用它们.

像这样的查询:

SELECT u.name, p.name
FROM users u
JOIN profiles p ON p.id = u.profile_id
WHERE u.id = :id

将最有可能使用NESTED LOOPSINDEX SCANuser.idINDEX SCANprofile.id,只要您建立在这些领域的指标.

具有低选择性过滤器的查询(即,需要多于10%来自其使用的表的数据的查询)将受益于MERGE JOINSHASH JOINS.

但是像上面给出的查询需要NESTED LOOPS高效运行.

如果您在此处发布查询和表定义,则可能会对索引和查询性能做很多事情.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有