AND t.query !~ '^COPY|<insufficient privilege'
AND t.calls > 10
ORDER BY 7 DESC;
分析执行计划及优化语句
1.EXPLAIN 介绍
EXPLAIN 语法:
EXPLAIN— show the execution plan of a statement
Synopsis
EXPLAIN [ ( option [, ...] ) ] statement
EXPLAIN [ ANALYZE ] [ VERBOSE ] statement
where option can be one of:
ANALYZE [ boolean ]
VERBOSE [ boolean ]
COSTS [ boolean ]
BUFFERS [ boolean ]
FORMAT { TEXT | XML | JSON | YAML }
例子: EXPLAIN (ANALYZE, VERBOSE, COSTS, BUFFERS,FORMAT JSON) select * from
t_e_content a where a.contentid < 'CNBJTW2600000000626';
EXPLAIN 参数解释:
ANALYZE :执行命令并显示执行事件,默认 false
VERBOSE :对执行计划提供额外的信息,如查询字段信息等,默认 false
COSTS :显示执行计划的,默认 true
BUFFERS :默认 false,前置条件是 analyze
FORMAT :默认格式是 TEXT
PostgreSQL 对每个查询产生一个查询规划。为匹配查询结构和数据属性选择正确的规划对性能绝对
有关键性的影响。因此系统包含了一个复杂的规划器用于寻找最优的规划。你可以使用 EXPLAIN 命令察
看规划器为每个查询生成的查询规划是什么。阅读查询规划是一门值得专门写一厚本教程的学问,而这份
文档可不是这样的教程,但是这里作了一些基本的介绍。
查询规划的结构是一个规划节点的树。最底层的节点是表扫描节点:它们从表中返回原始数据行。不
同的表访问模式有不同的扫描节点类型:顺序扫描、索引扫描、位图索引扫描。如果查询需要连接、聚集 、
排序、或者对原始行的其它操作,那么就会在扫描节点"之上"有其它额外的节点。并且,做这些操作通常
都有多种方法,因此在这些位置也有可能出现不同的节点类型。 EXPLAIN 给规划树中每个节点都输出一
行,显示基本的节点类型和规划器为执行这个规划节点预计的开销值。第一行 (最上层的节点)是对该规划
的总执行开销的预计;这个数值就是规划器执行最小化的数值。