Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何阅读PostgreSQL解释,顺序:自上而下还是自下而上?_Sql_Postgresql_Explain_Query Planner - Fatal编程技术网

如何阅读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