PostgreSql的执行计划1--获取执行计划

获取执行计划的方式是由Explain关键字来执行的,Explain的用法是: EXPLAIN [ ( option [,...] ) ] statement 其中option是值可以包含: analyze,timing,verbose,buffers,format option的含义:其中analyze 为true时,是实际执行了statement,所以在执行update,delete等语句时使用analyze需要小心,最好是包含在一个事务中,如: begin; explain analyze statement; --可以rollback,也可以commit End; timing的含义:显示执行的时间,在添加这个选项时必须analyze是true; verbose的含义:输出的字段显示; buffers的含义:显示有多少数据是能在共享缓存中获取; format的含义:设置输出的执行计划的格式; 示例1: explain select * from mytest9; QUERY PLAN --------------------------------------------------------- "Seq Scan on mytest9 (cost=0.00..184.00 rows=10000 width=34)" 不带任何option的执行计划显示。 示例2: explain analyze select * from mytest9; QUERY PLAN --------------------------------------------------------- "Seq Scan on mytest9 (cost=0.00..184.00 rows=10000 width=34) (actual time=0.022..2.195 rows=10000 loops=1)" "Total runtime: 2.884 ms" 使用了analyze后会显示一些运行时的参数。 示例3: explain (analyze true,timing,verbose,buffers,format json) select * from mytest9; QUERY PLAN --------------------------------------------------------- "[ { "Plan": { "Node Type": "Seq Scan","Relation Name": "mytest9","Schema": "public","Alias": "mytest9","Startup Cost": 0.00,"Total Cost": 184.00,"Plan Rows": 10000,"Plan Width": 34,"Actual (...)" 显示的是JSON格式的执行计划。 示例4: explain (analyze true,format text) select * from mytest9; QUERY PLAN --------------------------------------------------------- "Seq Scan on public.mytest9 (cost=0.00..184.00 rows=10000 width=34) (actual time=0.018..2.516 rows=10000 loops=1)" " Output: id,name_1,name_2,name_3" " Buffers: shared hit=84" "Total runtime: 3.497 ms" format参数改为text时,展现了输出的字段,share buffers中命中的个数,以及执行的时间,这个时间是真实的

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...