试图了解EXPLAIN功能 - 我有两个疑问 - 第一个查询优化,运行600毫秒(我有10万行)和第二查询正在运行900毫秒 但是当我运行EXPLAIN ANALYZE - 第一个查询,即快速运行,显示成本 - 64296,第二个查询,即运行速度慢,显示成本 - 20873 无法理解为什么更快的查询成本更高,以及为什么运行时间更长的查询成本更低。 有人可以给我一些提示吗?了解EXPLAIN功能在PostgreSQL
0
A
回答
0
PostgreSQL EXPLAIN
是一种真正拥有大量武器的动物腿,每一条腿都可能导致其起初不易理解的方式工作。
要回答你的问题,据我了解,虽然运行第一个查询Q1(而不是它EXPLAIN
),它的运行速度比第二(Q2)更快,但是当你做一个EXPLAIN ANALYSE
,Q1实际上具有较高的性价比。
我能想到的,都在这一刻我想起两个原因:
- 如果查询是
LIMIT
查询,其可能的Q1执行速度更快,而且还有较高的“成本”,因为PostgreSQL规划(有意)并不计划较小的总成本,而是所需结果的较小成本(在这种情况下,行数较少)。 - 另一个原因可能是缓存可能会破坏你的时代。你能否确认观察是否持续多次(3+)运行?
0
成本就是计划者认为执行查询需要多少资源(I/O和CPU时间)。这只是一个估算,通过数学模型计算。
在你的案件策划师错了,它选择了不理想的计划。它有时会发生。
为什么?可能有很多原因。也许统计数据不足(首先尝试运行analyze
)。也许统计数据是可以的,但规划人员使用错误的模型(例如,您可能在查询中存在已知有问题的相关谓词)。也许你的查询是在几十张桌子上,规划者不能完成所有可能的计划。等等。
相关问题
- 1. 了解简单的PostgreSQL的EXPLAIN
- 2. 解析PostgreSQL中EXPLAIN命令的输出
- 3. 了解功能
- 4. 了解功能
- 5. 了解查询中的COUNT行为与EXPLAIN与功能的比较
- 6. 了解iterator.next功能
- 7. 了解maxmin功能
- 8. Javascript了解功能
- 9. Javascript了解功能
- 10. Javascript功能了解
- 11. 了解MySQL中EXPLAIN的结果
- 12. 的PostgreSQL在功能
- 13. 功能在PostgreSQL中
- 14. 阿克曼功能了解
- 15. 了解C++ 0x功能
- 16. tipr.js了解每个功能
- 17. 了解撰写功能
- 18. 了解Twilio的功能。
- 19. 了解功能。 PCAP和BPF
- 20. 了解JavaScript关闭功能
- 21. 了解TSQL合并功能
- 22. 安卓:了解功能remapCoordinateSystem
- 23. 了解Virto功能流程
- 24. 帮助了解功能
- 25. 了解如何transaction.complete功能?
- 26. 了解轮廓功能
- 27. 了解新的iOs功能?
- 28. 了解功能和undefined
- 29. 了解此Javascript功能
- 30. 了解2壳功能
可能是因为优化器感到困惑,并为第二个查询选择了错误的执行计划。 –