如何阅读PostgreSQL解释,顺序:自上而下还是自下而上?
以下是一个示例计划:如何阅读PostgreSQL解释,顺序:自上而下还是自下而上?,sql,postgresql,explain,query-planner,Sql,Postgresql,Explain,Query Planner,以下是一个示例计划: 这些操作的执行顺序是什么?自下而上?自上而下?两个方向都有意义。从上到下是对数据的请求。数据从下到上。你会看到一棵树——每个节点都有最小的一个子节点。在执行时,节点调用他的子节点——“发送我的数据”,这个调用被递归地重复到leafs-seq scan、index scan、set returned function call。。。生成数据和逐行-是发送给父级的数据 我通常从底部最后一行->开始阅读树,直到顶部 在您的情况下,它显然需要数据才能进行排序,因此排序是它所做的最后
这些操作的执行顺序是什么?自下而上?自上而下?两个方向都有意义。从上到下是对数据的请求。数据从下到上。你会看到一棵树——每个节点都有最小的一个子节点。在执行时,节点调用他的子节点——“发送我的数据”,这个调用被递归地重复到leafs-seq scan、index scan、set returned function call。。。生成数据和逐行-是发送给父级的数据 我通常从底部最后一行
->
开始阅读树,直到顶部
在您的情况下,它显然需要数据才能进行排序,因此排序是它所做的最后一件事
顺序扫描和索引查找:
要查找的重要内容通常是它是否使用索引。
您可以使用设置enable_seqscan=OFF
在没有足够数据供计划员使用索引时强制使用索引。
记得把它放回去
重要:如果使用解释分析(或分析),将产生副作用
我真的建议您阅读,您还可以找到一些不错的东西,比如将输出作为yaml或json:
EXPLAIN (format yaml) your_query_here
- 本文中的更多细节,而不是我的:
另请参见:(对于一个漂亮的表示)BTW
Sort Method:externalmerge Disk:4664kB
表示postgres的工作内存配置非常低。只需将work\u mem
设置为更合适的设置,您就可以更快地获得结果。explain.depesz.com是探索解释计划的绝佳工具:
EXPLAIN (format yaml) your_query_here