EXPLAIN [ ( option [, ...] ) ] statement
EXPLAIN [ ANALYZE ] [ VERBOSE ] statement
������option�ϰʲ��Τ����줫���뤳�Ȥ��Ǥ��ޤ���
ANALYZE [ boolean ]
VERBOSE [ boolean ]
COSTS [ boolean ]
BUFFERS [ boolean ]
TIMING [ boolean ]
FORMAT { TEXT | XML | JSON | YAML }
Ϳ����줿ʸ���Ф��ơ�PostgreSQL�ץ��ʤ���������¹Էײ��ɽ�����ޤ��� �¹Էײ�ϡ��䤤��碌ʸ�����Ȥ���ơ��֥��ʣ���ξ��⤢��ˤ������ˡ��ñ��ʥ��������������ǥå����������ʤɡˡ�ʣ���Υơ��֥�Ȥ�����ˡ��ƥơ��֥뤫����Ф����Ԥ��礹�뤿��˻��Ѥ����祢�르�ꥺ�����ΤǤ���
ɽ�����Ƥ���Ǥ⡢�Ǥ���פʤΤϡ�ʸ�μ¹Ԥˤ����륳���Ȥθ��Ѥ��Ǥ��� ����ϡ��ץ��ʤ�ʸ�μ¹Ԥˤ�������֡�Ǥ�դΡ�����������Ū�ˤϥǥ������ڡ�����Ф��̣���륳����ñ�̤Ƿ�¬�ˤ��¬������ΤǤ��� ����Ū�ˤϡ�2�Ĥο���ɽ������ޤ��� 1�ĤϺǽ�ιԤ��֤����ޤǤΥ������ȥ��åץ����ȡ��⤦1�ĤϤ��٤ƤιԤ��֤����ޤǤι�ץ����ȤǤ��� �ۤȤ�ɤ��䤤��碌�ˤȤä�����Ȥʤ�ΤϹ�ץ����Ȥ����Ǥ�����EXISTS���䤤��碌�ʤɤΥ���ƥ����ȤǤϡ��ץ��ʤϹ�ץ����Ȥ��Ǥ�û���ʤ�ץ����⡢�������ȥ��åץ����Ȥ��Ǥ�û���ʤ�ץ������Ӥޤ��ʥ��������塼���ϹԤ�1�ļ������������ߤ��뤫��Ǥ��ˡ� ����ˡ�LIMIT���Ȥä��䤤��碌���֤��Կ������¤����硢�ץ��ʤϼºݤˤϤɤηײ褬�����㥳���Ȥˤʤ뤫�����뤿�ᡢ���Τ�����������Υ����Ȥδ֤�Ŭ�ڤ���֤�Ԥ��ޤ���
ANALYZE���ץ������դ���ȡ��ײ��������Ǥʤ���ʸ���ºݤ˼¹Ԥ���ޤ��� ���ξ��ϡ��Ʒײ�Ρ��ɤ��줿���в���֡ʥߥ���ñ�̡ˤȼºݤ��֤��줿���Կ���ޤࡢ�¼¹Ի����������ɲ�ɽ������ޤ��� �ץ��ʤο�¬�ȼºݤ��ͤ��ɤ����ٶ�ʤ뤫���ǧ�Ǥ���Ȥ������ǡ����Υ��ץ�����ͭ�ѤǤ���
重要項目: ANALYZE����Ѥ������ϡ�ʸ���ºݤ˼¹Ԥ���뤳�Ȥ�˺��ʤ��Ǥ��������� EXPLAIN��SELECT���֤����Ϥ�ޤä���ɽ�����ޤ���ʸ��ȼ�������Ѥ��̾��̤�ȯ�����ޤ��� INSERT��UPDATE��DELETE��CREATE TABLE AS��EXECUTEʸ���Ф��ơ��ǡ����˱ƶ���Ϳ���ʤ��褦��EXPLAIN ANALYZE��¹Ԥ��������ϡ��ʲ�����ˡ����Ѥ��Ƥ���������
BEGIN; EXPLAIN ANALYZE ...; ROLLBACK;
ANALYZE�����VERBOSE���ץ����Τߤ������ν���ǤΤߡ����ץ����ꥹ�Ȥ��̤dz�뤳�Ȥʤ��������ǽ�Ǥ��� PostgreSQL 9.0������ޤǤϡ���̤��ʤ���ʸ�Τߤ����ݡ��Ȥ���Ƥ��ޤ����� ���٤Ƥο��������ץ����ϳ���դ���ʸ�Τߤǥ��ݡ��Ȥ���뤳�Ȥ����ꤷ�Ƥ��ޤ���
���ޥ�ɤ�¹Ԥ����ºݤμ¹Ի��֤䤽��¾���������ɽ�����ޤ��� ���Υѥ����Υǥե���Ȥ�FALSE�Ǥ���
�ײ�ˤĤ��Ƥ��ɲþ������Ϥ��ޤ��� ����Ū�˸����ȡ��ײ�ĥ�������������ơ��֥롢�ؿ�̾��γƥΡ��ɤ��Ф��ƽ�����ꥹ�Ȥ�ޤ�ޤ��� ����ϰϥơ��֥����̾���դ��Ƽ�����ѿ���̿̾�����ޤ����������ɽ�������ƥȥꥬ��̾������Ϥ��ޤ��� ���Υѥ����Υǥե���Ȥ�FALSE�Ǥ���
�Ʒײ�Ρ��ɤο��굯ư�����Ȥ��������ȡ�����˿���Կ��ȳƹԤο������˴ؤ�������ޤ�ޤ��� ���Υѥ����Υǥե���Ȥ�TRUE�Ǥ���
�Хåե��λ��Ѿ����˴ؤ�������ޤ�ޤ��� ����Ū�ˤϡ���ͭ�֥��å��Υҥåȿ����ɤ����������ƥ��֥��å������Ф�������������֥��å��Υҥåȿ��������ƥ��֥��å������ɤ������Ф���������֥��å����ɤ������Ф������ޤ���ޤ��� �ҥå��Ȥϡ�ɬ�פʻ��˥���å�����ˤ��Υ֥��å������Ĥ��ä������ɤ�꤬��줿���Ȥ���̣���ޤ��� ��ͭ�֥��å��ˤϡ��̾�Υơ��֥�ȥ���ǥå�������Υǡ������ޤޤ�ޤ��� ��������֥��å��ˤϡ�����ơ��֥�Ȥ��Υ���ǥå�������Υǡ������ޤޤ�ޤ��� ����֥��å��ˤϡ������Ȥ�ϥå��塢�ޥƥꥢ�饤���ײ�Ρ��ɤǻ��Ѥ����û����ͭ���ʥǡ������ޤޤ�ޤ��� �����ƥ��֥��å����ϡ�����ޤǤ��ѹ����ʤ��ä��������䤤��碌�ˤ�ä��ѹ����줿�֥��å��ο����ޤ��� �Ф��֥��å����ϡ��䤤��碌�����δ֤˥Хå�����ɤˤ�ꡢ�����ƥ����֤��ä��֥��å����⥭��å��夫���ɤ��Ф��줿�֥��å��ο����ޤ��� ��̥�٥�ΥΡ��ɤ�ɽ�������֥��å����ˤϡ����λҥΡ��ɤ��٤Ƥǻ��Ѥ����֥��å����ޤޤ�ޤ��� �ƥ����ȷ����Ǥϡ������ͤΤߤ����Ϥ���ޤ��� ���Υѥ�����ANALYZE�ѥ�����ͭ���Ǥ�����ˤΤ��Ѥ��뤳�Ȥ��Ǥ��ޤ��� �ǥե���Ȥ�FALSE�Ǥ���
�ºݤΥ������ȥ��å��֤ȥΡ��ɤ���䤵�줿���֤��ɲ�ɽ������ޤ��� �����Υ����ƥ�Ǥϡ������ƥ९���å����٤��ɤ�륪���С��إåɤΤ����䤤��碌�����ʤ���®�ˤʤ��ǽ��������ޤ��� ���Τ��ᡢ�ºݤλ��֤ǤϤʤ��ºݤιԿ��Τߤ�ɬ�פǤ���ΤǤ���С����Υѥ�����FALSE�����ꤹ������ͭ�פǤ��礦�� ���Υѥ�����ANALYZE�ѥ�����ͭ���Ǥ�����ˤΤ��Ѥ��뤳�Ȥ��Ǥ��ޤ��� �ǥե���Ȥ�TRUE�Ǥ���
���Ϸ�������ꤷ�ޤ��� TEXT��XML��JSON��YAML������ǽ�Ǥ��� TEXT�ʳ��ν��Ϥˤ�TEXT���Ϥ�Ʊ�����ޤޤ�Ƥ��ޤ������ץ������ˤ����Ϥ�����ưפˤʤ�ޤ��� ���Υѥ����Υǥե���Ȥ�TEXT�Ǥ���
�������ץ�����ͭ���Ȥ��뤫̵���Ȥ��뤫����ꤷ�ޤ��� ���ץ�����ͭ���ˤ��뤿��ˤ�TRUE��ON��1�Τ����줫��ޤ��� ̵���ˤ���ˤ�FALSE��OFF�� 0�Τ����줫��ޤ��� boolean�ͤϾ�ά��ǽ�Ǥ��� ��ά����TRUE�Ȳ��ꤵ��ޤ���
�¹Էײ��ɽ���оݤȤʤ롢SELECT��INSERT��UPDATE��DELETE��VALUES��EXECUTE��DECLARE��CREATE TABLE AS�Τ����줫��ʸ�Ǥ���
���ޥ�ɤη�̤ϡ�statement���Ф������줿�ײ��ƥ����Ȥ��������ޤ��� ��ά���뤳�Ȥ�Ǥ��ޤ������¹Ի��������������դ����ޤ��� 項14.1�ǤϽ��Ϥ�������ˤĤ����������ޤ���
PostgreSQL�䤤��碌�ץ��ʤ���ʬ�ʾ����Ȥä���礻���Ŭ���Ǥ���褦�ˤ���ˤϡ��䤤��碌��ǻ��Ѥ���뤹�٤ƤΥơ��֥�˴ؤ���pg_statistic�Υǡ�����ǿ����֤ˤ��ʤ���Фʤ�ޤ��� �̾���ư�Х��塼��ǡ�����ˤ�꼫ưŪ�˽�������ޤ��� �������Ƕ�����Ƥ��礭���ѹ����줿�ơ��֥�Ǥϡ���ư�Х��塼�ब�����ѹ����ɤ��Ĥ��ޤ��ԤĤΤǤϤʤ������Ȥˤ��ANALYZE��¹Ԥ��ʤ���Фʤ�ʤ��Ǥ��礦��
�¹Էײ���γƥΡ��ɤμ¹Ի������Ȥ�¬�ꤹ�뤿��ˡ����ߤ�EXPLAIN ANALYZE�����ϡ��䤤��碌�¹Ԥ��Ф�����������Τ���Υ����С��إåɤ�ä��ޤ��� ���η�̡������䤤��碌�ˤĤ��Ƥ�EXPLAIN ANALYZE�¹Ԥ������̤��䤤��碌��¹Ԥ�����������˻��֤������뤳�Ȥ�����ޤ��� ���Υ����С��إåɤ��̤��䤤��碌�������Ȼ��Ѥ���ץ�åȥե�����˰�¸���ޤ��� �¹Ԥδ�����û�����֤�ɬ�פȤ���ײ�Ρ��ɤ˴ؤ��ơ����դ����뤿��Υ����ƥॳ�����������Ū����®�ʥץ�åȥե������Ǻǰ��ʾ�礬ȯ�����ޤ���
integer���1�Ļ�����10000�Ԥ�¸�ߤ���ơ��֥���Ф��ơ�ñ����䤤��碌��Ԥä������䤤��碌�ײ��ɽ�����ޤ���
EXPLAIN SELECT * FROM foo; QUERY PLAN --------------------------------------------------------- Seq Scan on foo (cost=0.00..155.00 rows=10000 width=4) (1 row)
�ʲ���Ʊ���䤤��碌��JSON���Ϸ����ǽ��Ϥ�����ΤǤ���
EXPLAIN (FORMAT JSON) SELECT * FROM foo; QUERY PLAN -------------------------------- [ + { + "Plan": { + "Node Type": "Seq Scan",+ "Relation Name": "foo", + "Alias": "foo", + "Startup Cost": 0.00, + "Total Cost": 155.00, + "Plan Rows": 10000, + "Plan 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)
�ʲ���Ʊ���䤤��碌��YAML������ɽ������ΤǤ���
EXPLAIN (FORMAT YAML) SELECT * FROM foo WHERE i='4'; QUERY PLAN ------------------------------- - Plan: + Node Type: "Index Scan" + Scan Direction: "Forward"+ Index Name: "fi" + Relation Name: "foo" + Alias: "foo" + Startup Cost: 0.00 + Total Cost: 5.98 + Plan Rows: 1 + Plan Width: 4 + Index Cond: "(i = 4)" (1 row)
�ɼԤؤα齬�Ȥ���XML�����ˤĤ��Ƥϵ��ܤ��ޤ���
�ʲ��ϥ����ȿ����ͤ���Ϥ��ʤ�Ʊ���ײ�Ǥ���
EXPLAIN (COSTS FALSE) SELECT * FROM foo WHERE i = 4; QUERY PLAN ---------------------------- Index Scan using fi on foo 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.661..0.672 rows=7 loops=1) -> Index Scan using test_pkey on test (cost=0.00..32.97 rows=1311 width=8) (actual time=0.050..0.395 rows=99 loops=1) Index Cond: ((id > $1) AND (id < $2)) Total runtime: 0.851 ms (4 rows)
����������Ǽ���������Ū�ʿ��ͤ��оݤȤ���ơ��֥�μºݤ���Ȥˤ�ä��Ѥ��ޤ��� �ޤ������ο��ͤ����줿�䤤��碌��ά�ϡ��ץ��ʤβ��ɤΤ��ᡢPostgreSQL�Υ����֤ǰۤʤ��ǽ��������ޤ��Τ����դ��Ƥ��������� ����ˡ�ANALYZE���ޥ�ɤϡ��ǡ��������������ꤹ��ݤ˥�����ʥ���ץ��Ԥ����ᡢ�ºݤΥơ��֥����ʬ�ۤ��Ѥ�äƤ��ʤ��Ƥ⡢������ANALYZE��¹Ԥ���ȿ��ꥳ���Ȥ��Ѥ�뤳�Ȥ�����ޤ���