PostgreSql的执行计划1--获取执行计划
2015-05-28 11:10
204 查看
获取执行计划的方式是由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,timing,verbose,buffers,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中命中的个数,以及执行的时间,这个时间是真实的
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,timing,verbose,buffers,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中命中的个数,以及执行的时间,这个时间是真实的
相关文章推荐
- 使用EXPLAIN PLAN 获取SQL语句执行计划
- Oracle中获取执行计划的几种方法分析
- Oracle 获取执行计划
- [Oracle] 获取执行计划的各方法总结
- [Oracle]获取执行计划的各个方法总结
- 获取SQL执行计划的常见几种方法
- 使用 EXPLAIN PLAN 获取SQL语句执行计划
- PostgreSQL的 执行计划保存
- dbms_xplan.display_cursor 获取执行过的sql的执行计划
- oracle获取的执行计划区别及获取真实执行计划
- [Oracle]获取执行计划的各个方法总结
- Oracle获取执行计划方法
- 获取SQL执行计划的常见几种方法
- Oracle中获取执行计划的几种方法分析
- PostgreSQL执行计划
- 我对PostgreSQL 中 执行计划的处理范围的理解
- 获取执行计划——使用动态性能视图和AWR、Statspacks
- [牛客网]获取select * from employees对应的执行计划
- 使用DMO获取缓存里的执行计划
- 获取数据库缓存中的执行计划