¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

EXPLAIN

̾��

EXPLAIN -- �䤤��碌ʸ�μ¹Էײ��ɽ��

����

EXPLAIN [ ANALYZE ] [ VERBOSE ] statement

����

���Υ��ޥ�ɤ� PostgreSQL �ץ��ʤ��󶡤��줿�䤤��碌ʸ�Ѥ���������¹Էײ��ɽ�����ޤ��� ���μ¹Էײ�ϡ�����ʸ�ˤ�äƻ��Ȥ����ơ��֥� (ʣ���ξ��⤢��) ��������󤵤����ˡ (ñ��ʥ������󥹥�����󡢥���ǥå���������󡢤ʤ�) �򼨤����ꡢʣ���Υơ��֥뤬���Ȥ������ˤϤ��줾������ϥơ��֥��ɬ�פʹԤ��Ȥ߹�魯����˻��Ѥ�����祢�르�ꥺ��򼨤����ꤷ�ޤ���

����ɽ���ǺǤ���פʤΤϡ�ʸ�μ¹Ԥˤ����륳���Ȥθ��Ѥ��Ǥ��� �����ȤȤϡ��ץ��ʤ����ꤹ�롢ʸ�μ¹Ԥˤ�������� (�ǥ������ڡ�����Ф�ñ�̤Ƿ�¬) �Ǥ��� �ºݤˤ� 2 �Ĥο���ɽ������ޤ��� �ǽ�ιԤ��֤�������Υ������ȥ��å׻��֡����������ƤιԤ��֤����ޤǤι�פλ��֤Ǥ��� �ۤȤ�ɤ��䤤��碌�ˤȤä�����Ȥʤ�ΤϹ�׻��֤Ǥ�����EXISTS ���䤤��碌�ʤɤΥ���ƥ����ȤǤϡ��ץ��ʤϺǤ�û����׻��֤ǤϤʤ��Ǥ�û���������ȥ��å׻��֤����Ӥޤ� (���������塼���ϹԤ� 1 �ļ������������ߤ��뤫��Ǥ�)�� ���ˡ��⤷ ����֤��Կ������¤����硢�ץ��ʤϤɤηײ褬�����㥳���Ȥˤʤ뤫�򳵻����뤿������ν�λ�ޤǤˤǤդ��路���񤭴�����Ԥʤ��ޤ���

ANALYZE ���ץ����ˤ�ꡢʸ�Ϸײ�����ǤϤʤ��ºݤ˼¹Ԥ���ޤ��� �Ʒײ�Ρ��ɤˤ���䤵�줿���в����(�ߥ���ñ��)�ȼºݤ��֤����Կ���ɽ�����ɲä���ޤ��� �ץ��ʤο�¬�ȼºݤ��ͤ��ɤ�����ᤤ�����ǧ�Ǥ���Ȥ������Ǥ��Υ��ץ�����ͭ�Ѥʤ�ΤǤ���

���׹���: ANALYZE ����Ѥ������ϡ�ʸ���ºݤ˼¹Ԥ���뤳�Ȥ�˺��ʤ��Dz������� EXPLAIN �� SELECT ���֤��Ϥ��ν��Ϥ�����ɽ�����ޤ��󤬡�ʸ�������Ѥ��̾��̤�ȯ�����ޤ��� INSERT��UPDATE��DELETEEXECUTE ʸ���Ф��� EXPLAIN ANALYZE ��ǡ����˱ƶ����Фʤ��褦�˻��Ѥ��������ϡ��ʲ�����ˡ����Ѥ��Ʋ�������

BEGIN;
EXPLAIN ANALYZE ...;
ROLLBACK;

�ѥ�᡼��

ANALYZE

���ޥ�ɤ�¹Ԥ����ºݤβ�Ư���֤�ɽ�����ޤ���

VERBOSE

��������ǤϤʤ��ײ�ĥ꡼������ɽ��������ɽ�����ޤ��� �̾���Υ��ץ����� PostgreSQL �ΥǥХå��κݤˤΤ�ͭ�ѤǤ��� VERBOSE �ν��Ϥϡ�����ե�����ˤ����� explain_pretty_print �����꼡��ǰ�����Ŭ�������ˤ��뤳�Ȥ�Ǥ��ޤ���

statement

�¹Էײ��ɽ���оݤȤʤ롢Ǥ�դ�SELECT, INSERT, UPDATE,DELETE, EXECUTE, �⤷���� DECLAREʸ�Ǥ���

����

PostgreSQL �Υ��ץƥ��ޥ����ˤ����륳���Ⱦ���λ��Ѥ˴ؤ���ʸ���¿������ޤ��� ����˾ܤ�������ˤĤ��Ƥϡ���13.1�򻲾Ȥ��Ƥ���������

PostgreSQL�䤤��碌�ץ��ʤ��䤤��碌�κ�Ŭ���κݤ˽�ʬ�˾������ä����꤬�Ǥ���褦�ˤ��뤿��ˡ�ANALYZE ʸ��¹Ԥ��ơ��ơ��֥���Υǡ�����ʬ�ۤˤĤ��Ƥ����׾����Ͽ�����ʤ���Фʤ�ޤ��� �����Ԥ�ʤ����(�����뤤�ϡ�����ANALYZE ��¹Ԥ����塢�ơ��֥���Υǡ���������Ūʬ�ۤ��������Ѥ�ä���)�����ꥳ���Ȥϡ��䤤��碌�μºݤ�°���Ȥ�Ŭ�礹�뤳�ȤϤʤ������η�̡����ä��䤤��碌�ײ褬���򤵤�뤳�Ȥˤʤ�ޤ���

PostgreSQL �� 7.3 ������ΥС������Ǥϡ��䤤��碌�ײ�� NOTICE ��å������Ȥ������������Τ���Ƥ��ޤ����� ���ߤǤϡ��䤤��碌�ײ���䤤��碌��� (ñ��Υƥ������󤫤�����ơ��֥�η�����) �Ȥ���ɽ������ޤ���

��

��Ĥ� integer ��� 10000 �Ԥ���ĥơ��֥���ñ����䤤��碌���䤤��碌�ײ��ɽ�����ޤ���

EXPLAIN SELECT * FROM foo;

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

����ǥå����������硢����ǥå����դ�����ǽ�� WHERE ��������䤤��碌����Ѥ���ȡ�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)

����ؿ�����Ѥ����䤤��碌���Ф����䤤��碌�ײ����򼨤��ޤ���

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

                             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 ����Ѥ��ƥץ�ڥ����ɥ�������Ф���¹Էײ��ɽ��������Ǥ���

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)

������󡢤����Ǽ���������Ū�ʿ��ͤ��оݤȤ���ơ��֥�μºݤ���Ȥˤ�ä��Ѥ��ޤ��� �ޤ������ο��ͤ����򤵤줿�䤤��碌��ά�ϡ��ץ��ʤβ��ɤΤ���� PostgreSQL �Υ�꡼���֤ǰۤʤ뤳�Ȥ⤢��ޤ��Τ����դ��Ƥ��������� ���ˡ�ANALYZE ���ޥ�ɤϡ��ǡ��������׾������ꤹ��ݤ˥�����ʥ���ץ�󥰤�Ԥ��ޤ��Τǡ��ºݤΥơ��֥����ʬ�ۤ��Ѥ�äƤ��ʤ��Ƥ⡢������ANALYZE ��¹Ԥ�����˿��ꥳ���Ȥ��Ѥ�뤳�Ȥ�����ޤ���

�ߴ���

ɸ��SQL �Ǥ� EXPLAIN ʸ���������Ƥ��ޤ���