EXPLAIN

Name

EXPLAIN -- ��ʾ���ִ�й滮

Synopsis

EXPLAIN [ ANALYZE ] [ VERBOSE ] statement

����

����������ʾPostgreSQL�滮��Ϊ���ṩ��������ɵ�ִ�й滮�� ִ�й滮��ʾ������õı�����α�ɨ��� — �Ǽ򵥵�˳��ɨ�裬��������ɨ��� — ������������˶���� ������ʲô���������㷨��ÿ������ı���ȡ������Ҫ�ļ�¼��

��ʾ��������ؼ��IJ�����Ԥ�Ƶ����ִ�п����� ����ǹ滮�������и��������ʱ��Ĺ��ƣ��Դ���ҳ���ȡΪ��λ�������� ʵ������ʾ���������֣����ص�һ�м�¼ǰ������ʱ�䣬 �ͷ������м�¼����ʱ�䡣���ڴ������ѯ���ԣ����ĵ�����ʱ�䣬���ǣ� ��ijЩ�����£�����һ�� EXISTS �Ӳ�ѯ� �滮����ѡ����С����ʱ���������С��ʱ�䣨��Ϊִ�����ڻ�ȡһ����¼������Ҫͣ�������� ͬ�����������һ�� LIMIT �Ӿ����Ʒ��صļ�¼���� �滮���������յĿ�������һ������IJ�ֵ�Լ����ĸ��滮������ʡ��

ANALYZE ѡ��²�ѯ��ʵ��ִ�У����������ǹ滮�� ������ʾ����������ÿ���滮�ڵ��ڲ���������ʱ�䣨�Ժ���ƣ�����ʵ�ʷ��ص������� ��Щ���ݶ������ù滮����Ԥ���Ƿ����ʵ������а�����

Important: Ҫ��ס���Dz�ѯʵ������ʹ�� ANALYZE ��ʱ����ִ�еġ� ���� EXPLAIN �������κ� SELECT �᷵�ص������ ����������ѯ�ĸ����û���һ���ᷢ���ġ� ������� INSERT��UPDATE��DELETE������ EXECUTE �����ʹ�� EXPLAIN ANALYZE�����һ������ò�ѯӰ��������ݣ� ������ķ�����

BEGIN;
EXPLAIN ANALYZE ...;
ROLLBACK;

����

ANALYZE

ִ�������ʾʵ������ʱ�䡣

VERBOSE

��ʾ�滮���������ڲ�������ʽ������������һ��ժҪ�� ͨ�������ѡ��ֻ��������ĵ��Թ��̵�ʱ�����á� VERBOSE ��������Ǵ�ӡ�ù����ģ�Ҳ���ܲ��ǣ� ����ȡ�������ò��� explain_pretty_print��

���

�κ�SELECT��INSERT��UPDATE�� DELETE��EXECUTE������ DECLARE ��䡣

ע��

�� PostgreSQL ��ֻ�к��ٵ�һЩ�ĵ������й��Ż������㿪�������⡣ �ο� Section 13.1 ��ȡ������Ϣ��

Ϊ���� PostgreSQL ��ѯ�滮�����Ż���ѯ��ʱ������������жϣ� ������Ҫ���� ANALYZE ����Լ�¼�й������ڱ��еķֲ���ͳ����Ϣ�� �����û����������飨����������ϴ� ANALYZE ������ ���е�����ͳ�Ʒֲ������������仯������ô��������Ŀ���Ԥ�ƺܿ������ѯ��ʵ�����Բ�����Ӧ�� ��˺ܿ��ܻ�ѡȡһ���Ƚϲ�IJ�ѯ�滮��

�� PostgreSQL 7.3 ��ǰ����ѯ�滮���� NOTICE ��Ϣ����ʽ�������ġ� ����������ʾ��ʽ��һ����ѯ�������ʽ����������һ���е����ı��ֶεı���

����

��ʾһ����ֻ��һ�� int4 �к� 10000 �еı�ļ򵥲�ѯ�IJ�ѯ�滮��

EXPLAIN SELECT * FROM foo;

                       QUERY PLAN
---------------------------------------------------------
 Seq Scan on foo  (cost=0.00..155.00 rows=10000 width=4)
(1 row)

�������һ����������������ʹ��һ����Ӧ�������� WHERE �����IJ�ѯ�� EXPLAIN ����ʾ��ͬ�Ĺ滮��

EXPLAIN SELECT * FROM foo WHERE i = 4;

                         QUERY PLAN
--------------------------------------------------------------
 Index Scan using fi on foo  (cost=0.00..5.98 rows=1 width=4)
   Index Cond: (i = 4)
(2 rows)

������һ��ʹ���˾ۼ������IJ�ѯ�IJ�ѯ�滮��

EXPLAIN SELECT sum(i) FROM foo WHERE i < 4;

                             QUERY PLAN
-------------------------------------------------------------------
 Aggregate  (cost=23.93..23.93 rows=1 width=4)
   ->  Index Scan using fi on foo  (cost=0.00..23.92 rows=6 width=4)
         Index Cond: (i < 10)
(3 rows)
   

������һ��ʹ�� EXPLAIN EXECUTE ��ʾһ����׼���õIJ�ѯ�滮�����ӣ�

PREPARE query(int, int) AS SELECT sum(bar) FROM test
    WHERE id > $1 AND id < $2
    GROUP BY foo;

EXPLAIN ANALYZE EXECUTE query(100, 200);

                                                       QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------
 HashAggregate  (cost=39.53..39.53 rows=1 width=8) (actual time=0.66..0.67 rows=7 loops=1)
   ->  Index Scan using test_pkey on test  (cost=0.00..32.97 rows=1311 width=8) (actual time=0.05..0.39 rows=99 loops=1)
         Index Cond: ((id > $1) AND (id < $2))
 Total runtime: 0.85 msec
(4 rows)
   

ע��������ʾ�����֣� ��������ѡ��IJ�ѯ���Զ��п����ڸ��� PostgreSQL�汾֮�䲻ͬ--��Ϊ�滮���ڲ��ϸĽ��� ���⣬ANALYZE ����ʹ������IJ�������������ͳ�ƣ� ��ˣ�һ���µ� ANALYZE ����֮�������ƿ��ܻ�仯�� ��ʹ���ݵ�ʵ�ʷֲ�û�иı�Ҳ������

������

�� SQL ��׼��û��EXPLAIN ��䡣

�ּ�

ANALYZE