CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name ] ON table [ USING method ] ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ) [ WITH ( storage_parameter = value [, ... ] ) ] [ TABLESPACE tablespace ] [ WHERE predicate ]
CREATE INDEX�ϡ����ꤷ���ơ��֥�λ��ꤷ����(ʣ����)���Ф��륤��ǥå�������ޤ��� ����ǥå����ϼ�˥ǡ����١�������ǽ����夹�뤿��˻Ȥ��ޤ� �ʤ�����������ǥå�������Ŭ�ڤʻ��Ѥ���ǽ���㲼�ˤĤʤ����ǽ��������ޤ��ˡ�
����ǥå����Υ����ե�����ɤϡ���̾���ޤ��ϳ�̤˰Ϥޤ줿���Ȥ��ƻ��ꤵ��ޤ��� ����ǥå�����åɤ�ʣ������Ф��륤��ǥå����ݡ��Ȥ�����ϡ�ʣ���Υե�����ɤ����Ǥ��ޤ���
����ǥå����Υե�����ɤȤ��ơ��ơ��֥�Ԥ�1�İʾ������ͤ�����뼰�����Ǥ��ޤ��� ���ε�ǽ�ϡ����Υǡ����˲��餫���Ѵ���ä����ͤ��Ȥ���ǡ����ؤι�®�ʥ���������Ԥ����ʤȤ��ƻ��Ѥ��뤳�Ȥ��Ǥ��ޤ��� �㤨�С�upper(col)�Ȥ������˴�Ť�����ǥå���������С�WHERE upper(col) = 'JIM'��Ǥϥ���ǥå�������Ѥ��뤳�Ȥ��Ǥ��ޤ���
PostgreSQL��B-tree��hash��GiST��GIN�Υ���ǥå�����åɤ��Ѱդ��Ƥ��ޤ��� �桼�����ȼ��˥���ǥå�����åɤ�������뤳�Ȥ�Ǥ��ޤ���������Ϥ��ʤ�ʣ���Ǥ���
WHERE�礬¸�ߤ����硢��ʬ����ǥå�������������ޤ��� ��ʬ����ǥå����ϡ��ơ��֥�ΰ������̾�ϡ��ơ��֥����Ǥ�ꥤ��ǥå�����ͭ�Ѥ���ʬ�ΤߤΥ���ȥ����ĥ���ǥå����Ǥ��� �㤨�С���ʧ�Ѥߤ���ʸ��̤��ʧ����ʸ�����Ȥ��ƻ��ĥơ��֥뤬���ꡢ�ơ��֥����Τˤ�����̤��ʧ����ʸ�γ�礬�����������ġ����ˤ˻��Ѥ�����硢̤��ʧ����ʸ�Τߤ˥���ǥå�����������뤳�Ȥ���ǽ�����Ǥ��ޤ��� ��ʬ����ǥå����Τ���¾��������ˡ�Ȥ��ơ�UNIQUE�դ���WHERE����Ѥ��ơ��ơ��֥�ΰ����˰�������������㤬�ͤ����ޤ��� �ܺ٤�項11.8�Ȥ��Ƥ���������
WHERE����μ��Ǥϡ����Ȥʤ�ơ��֥����ΤߤȤǤ��ޤ��� ������������ǥå������ղä���������ǤϤʤ������Ƥ������Ѥ��뤳�Ȥ��Ǥ��ޤ��� �ޤ������ߡ����䤤��碌�Ƚ��ˤĤ��Ƥϡ�WHERE�ǻ��Ѥ��뤳�Ȥ��Ǥ��ޤ��� Ʊ������¤ϡ�����ɽ���줿����ǥå����Υե�����ɤˤ�Ŭ�Ѥ���ޤ���
����ǥå���������ǻ��Ѥ�������Ƥδؿ��ȱ黻�Ҥϡ�"����"��immutable�ˤǤʤ���Фʤ�ޤ��� �Ĥޤꡢ��̤����ϰ����ˤΤߤ˰�¸������¾�Υơ��֥�����Ƥ丽����ʤɤΡ˳�������αƶ�������ƤϤʤ�ޤ��� �������¤ˤ�äơ�����ǥå�����ư���ʬ�������Ƥ��뤳�Ȥ��ݾڤ���ޤ��� ����ǥå�������WHERE��˥桼������δؿ�����Ѥ����硢�ؿ����������ݡ�IMMUTABLE�����ѡ˥��ץ������դ��뤳�Ȥ�˺��ʤ��Ǥ���������
����ǥå�����ʴ��˥ǡ�����������֤ǡ˺�����������ơ��֥�˥ǡ������ɲä�����ˡ��ơ��֥�����ͤ���ʣ���Ƥ��ʤ��������ޤ��� ��ʣ����ȥ��������ǡ����������ޤ��Ϲ����ϥ��顼�Ȥʤ�ޤ���
���Υ��ץ�������Ѥ���ȡ�PostgreSQL�ϡ��оݥơ��֥���Ф���Ʊ��������������������ɻߤ���褦�ʥ��å�����������˥���ǥå�����������ޤ��� �̾�Υ���ǥå������������Ǥϡ���λ����ޤ��оݥơ��֥�ؤν��ߤϥ��å�����ޤ����ɤ��ϥ��å�����ޤ���ˡ� ���Υ��ץ�������Ѥ���ݤ����դ��ʤ���Фʤ�ʤ�����ʣ������ޤ��� ����ǥå�����Ʊ�������Ȥ��Ƥ���������
�������륤��ǥå�����̾���Ǥ��� ����̾���ˤϡ���������̾��ޤ�뤳�ȤϤǤ��ޤ��� ����ǥå����ϡ���ˤ��οƥơ��֥��Ʊ���������ޤ˺�������ޤ��� ����̾�����ά����ȡ�PostgreSQL�Ϥ��οƥơ��֥��̾���ȥ���ǥå����դ��������̾�˴�Ť���Ŭ�ڤ�̾�������Ӥޤ���
����ǥå������������ơ��֥��̾���Ǥ��ʥ���������̾�ξ��⤢��ޤ��ˡ�
���Ѥ��륤��ǥå�����åɤ�̾���Ǥ��� btree��hash��gist��gin�������ޤ��� �ǥե���ȤΥ�åɤ�btree�Ǥ���
�ơ��֥�����̾���Ǥ���
�ơ��֥���1�İʾ�������Ѥ������Ǥ��� �̾盧�μ��ϡ���ʸ�Ǽ������̤��̤ǰϤ�ɬ�פ�����ޤ��� �������������ؿ��ƤӽФ������ˤʤäƤ�����ϳ�̤��ά���뤳�Ȥ��Ǥ��ޤ���
�黻�ҥ��饹��̾���Ǥ����ܺ٤ϲ����Ȥ��Ƥ���������
�ʥǥե���ȤΡ��������Υ����Ƚ����ꤷ�ޤ���
�������Υ����Ƚ����ꤷ�ޤ���
NULL����NULL������˥����Ȥ��뤳�Ȥ���ꤷ�ޤ��� �����DESC�����ꤵ�줿���Υǥե���ȤǤ���
NULL����NULL����˥����Ȥ��뤳�Ȥ���ꤷ�ޤ��� �����DESC�����ꤵ��ʤ����Υǥե���ȤǤ���
����ǥå�����ͭ�γ�Ǽ�ѥ�����̾���Ǥ��� ����ǥå�����Ǽ�ѥ����Ȥ��Ƥ���������
����ǥå�������������ơ��֥���֤Ǥ��� ���ꤵ��ʤ��ä���硢default_tablespace���⤷����ơ��֥��Υ���ǥå����Ǥ���С�temp_tablespaces����θ����ޤ���
��ʬ����ǥå����Ѥ����Ǥ���
��ά��ǽ��WITH��Ǥϡ�����ǥå������Ф���Ǽ�ѥ�������ꤷ�ޤ��� ����ǥå�����åɤϤ��줾���ͭ�������ǽ�ʳ�Ǽ�ѥ���������ޤ��� B-tree��hash�����GiST�Ȥ��ä�����ǥå����Ϥ��٤ưʲ���1�ĤΥѥ���������դ��ޤ���
����ǥå����ѤΥե���ե������ϳ��ʥѡ�����ȡˤǡ�����ǥå�����åɤ�����ǥå����ڡ�����ޤȤ�夲����ˤɤ����٥ڡ�������Ѥ��뤫����ꤹ���ΤǤ��� B-tree�Ǥϡ���եڡ����Ͻ������ǥå������ۻ��ȱ�¦�ʿ��������祭���ͤ��ɲä��������ˤ˥���ǥå������ĥ������ˤ��γ��ʬ�ڡ�������Ѥ��ޤ��� ���θ�ڡ������٤Ƥ������˻��Ѥ����ȡ�����ǥå����θ��̤��ˤ䤫����������褦��ʬ�䤵��ޤ��� B-tree�Υǥե���ȤΥե���ե�������90�Ǥ�����10����100�ޤǤ�Ǥ�դ������ͤ����ꤹ�뤳�Ȥ��Ǥ��ޤ��� �ơ��֥���Ѳ����ۤȤ�ɤʤ���硢100�������ǥ���ǥå�����ʪ�����������Ǿ����Ǥ��ޤ��� ����������¿�����ϡ���꾮���ʥե���ե����������ꤹ�뤳�Ȥǡ��ڡ���ʬ������٤ʤ����뤳�Ȥ��Ǥ��ޤ��� ����¾�Υ���ǥå�����åɤǤϡ��ե���ե��������褽��Ʊ���Ǥ������ۤʤ��̣�ǻ��Ѥ��ޤ��� ��åɤˤ�äƥե���ե������Υǥե�����ͤϰۤʤ�ޤ���
GIN����ǥå����Ǥϰʲ��ΰۤʤ�ѥ���������դ��ޤ���
���������項53.3.1�����������®������ˡ����Ѥ��뤫�ɤ��������椷�ޤ��� ����������ͥѥ����Ǥ��ꡢON�Ϲ�®������ͭ���ˡ�OFF��̵���ˤ��ޤ��� ��項18.1�������Τ褦�ˡ�ON��OFF���̵��ܤ��ǽ�Ǥ����� �ǥե���Ȥ�ON�Ǥ���
注意: ALTER INDEX����Ѥ���FASTUPDATE��̵���ˤ��뤳�Ȥˤ�ꡢ������������Ե���Υ���ǥå������ܥꥹ�Ȥ�����ʤ��褦�ˤʤ�ޤ��� �����������Υ��ޥ�ɼ��ΤϤ���ޤǤι��ܤ��Ǥ��Ф��ޤ��� �μ¤��Ե���Υꥹ�Ȥ���ˤ��뤿��ˤϡ�³���ƥơ��֥��VACUUM���������ɤ��Ǥ��礦��
����ǥå����κ��������̾�Υǡ����١������˱ƶ���Ϳ���뤳�Ȥ�����ޤ��� �̾�PostgreSQL�ϡ��оݥơ��֥���Ф�����ߤ���å����Ƥ��顢�оݥơ��֥����٥���������Τ�ǥå����դ����ޤ��� ¾�Υȥ�������ϥơ��֥���ɤ�뤳�ȤϤǤ��ޤ������оݥơ��֥���ιԤ�������������������褦�Ȥ���ȡ�����ǥå�����������λ����ޤǥ֥��å�����ޤ��� ��ȯ�ʱ��Ѿ��֤Υǡ����١��������ƥ�ξ�硢����Ͻ���ʱƶ���Ϳ���ޤ��� �����絬�Ϥʥơ��֥���Ф��륤��ǥå��������ϲ����֤⤫���뤳�Ȥ��������ޤ��� �ޤ������Ϥʥơ��֥�Ǥ��äƤ⡢����ǥå��������ˤ�ꡢ���Ѿ��֤Υ����ƥ�Ǥϼ���������ʤ����֡����ߥ��å����������ǽ��������ޤ���
PostgreSQL�Ͻ��ߤ���å����ʤ�����ǥå��������⥵�ݡ��Ȥ��Ƥ��ޤ��� CREATE INDEX��CONCURRENTLY���ץ�����Ĥ��뤳�ȤǤ����������Ԥ��ޤ��� ���Υ��ץ�����Ȥ��ȡ�PostgreSQL�ϥơ��֥��2����ʤ���Фʤ�ޤ��� ����ˡ�����Ū�ˤ��Υ���ǥå�������Ѥ����ǽ�������롢�¹���Τ��٤ƤΥȥ����������ޤ��Ե����ʤ���Фʤ�ޤ��� �������äơ������������̾��������������Ȼ��֤������ꡢ�ޤ�����λ����ޤǤλ��֤�����Ĺ���ʤ�ޤ��� ������������ǥå�����������̾������Ԥ�³���뤳�Ȥ��Ǥ��ޤ��Τǡ����������ϱ��ѴĶ��Ǥο�������ǥå���������ͭ�ѤǤ��� ���������ǥå��������ˤ��CPU�������Ϥ���٤�������ޤ��Τǡ�¾������®�ˤʤ��ǽ��������ޤ���
Ʊ���¹ԥ���ǥå������ۤǤϼºݡ�����ǥå��������ȥ�������ǥ����ƥ५����������Ͽ���졢������軰�ȥ��������2�ĤΥơ��֥�Υ����������ޤ��� ���Ȥ��а��������ǥå����ˤ�����������ȿ�ʤɡ��ơ��֥륹�����������꤬ȯ������ȡ�CREATE INDEX�ϼ��Ԥ��ޤ�����"̵����"����ǥå������ĤäƤ��ޤ��ޤ��� ������������ǥå����ϴ����ǤϤʤ���ǽ��������ޤ��Τǡ��䤤��碌�κݤˤ�̵�뤵��ޤ��� ���������������˥����С��إåɤ�������ޤ��� psql��\d���ޥ�ɤǤϡ�������������ǥå�����INVALID�Ȥ�����𤷤ޤ���
postgres=# \d tab Table "public.tab" Column | Type | Modifiers --------+---------+----------- col | integer | Indexes: "idx" btree (col) INVALID
�����������ο侩������ˡ�ϡ�����ǥå���������������CREATE INDEX CONCURRENTLY��¹Ԥ��뤳�ȤǤ��� ��¾�ˤ�REINDEX����Ѥ�������ǥå����κƺ����Ȥ�����ˡ�⤢��ޤ��� ��������REINDEX��Ʊ�������ݡ��Ȥ��Ƥ��ޤ���Τǡ�������ˡ��̥�Ϥ�����ޤ���
����¾�˰��������ǥå�����Ʊ����������������ջ��ब����ޤ��� 2���ܤΥơ��֥륹����Ϥޤ�����ǡ�¾�Υȥ���������Ф�������������ͭ���ˤʤäƤ���Ȥ������Ǥ��� ����ϡ�����ǥå��������ѤǤ���褦�ˤʤ����䥤��ǥå����������ǽ�Ū�˼��Ԥ����Ȥ��Ƥ⡢�����ȿ��¾�Υȥ����������𤵤�Ƥ��ޤ����Ȥ��̣���ޤ��� �ޤ���2���ܤΥ��������˼��Ԥ�����⡢"̵����"����ǥå����ˤ����������϶�������³���ޤ���
������ǥå�������ʬ����ǥå�����Ʊ�������⥵�ݡ��Ȥ���Ƥ��ޤ��� ����ɾ����˥��顼��ȯ���������⡢���������������������ȿ��Ʊ�ͤʾ�����ȯ�����ޤ���
Ʊ��ơ��֥���Ф����̾�Υ���ǥå�������������ʣ���¹Ԥ��ƹԤ����Ȥ��Ǥ��ޤ��� ������������ơ��֥���Ф��륤��ǥå�����Ʊ�������ϰ��٤�1�Ĥ����Ԥ����Ȥ��Ǥ��ޤ��� �ޤ����ɤξ��Ǥ⥤��ǥå���������ϥơ��֥륹�����ޤ��ѹ��ϤǤ��ޤ��� ����¾�ˡ��̾��CREATE INDEX���ޥ�ɤϥȥ�������֥��å���Ǽ¹Ԥ����뤳�Ȥ��Ǥ��ޤ�����CREATE INDEX CONCURRENTLY�ϼ¹Ԥ����뤳�Ȥ��Ǥ��ʤ��Ȥ��������������ޤ���
����ǥå��������ɤΤ褦�ʻ��˻��Ѥ��졢�ɤΤ褦�ʻ��˻��Ѥ���ʤ������ޤ����ɤΤ褦�ʾ���ͭ�Ѥ��Ȥ��ä�����ˤĤ��Ƥ�第11章�Ȥ��Ƥ���������
���ߤϡ�B-tree��GiST��GIN����ǥå�����åɤΤߤ���ʣ������Ф��륤��ǥå����ݡ��Ȥ��Ƥ��ޤ��� ����Ǥ�����ϡ��ǥե���ȤǤ�32�ĤޤǤǤ��ʤ������¤�PostgreSQL���ۤκݤ��ѹ��Ǥ��ޤ��ˡ� ���ߡ�B-tree�Τߤ����������ǥå����ݡ��Ȥ��Ƥ��ޤ���
�黻�ҥ��饹�ϡ�����ǥå����Τ��줾�����˻��ꤹ�뤳�Ȥ��Ǥ��ޤ��� �黻�ҥ��饹�ϡ�������Υ���ǥå������Ȥ��黻�Ҥ��̤��ޤ��� �㤨�С�4�Х����������Ф���B-tree����ǥå����ˤϡ�int4_ops���饹��Ȥ��ޤ��� ���α黻�ҥ��饹�ˤϡ�4�Х�����������Ӵؿ����ޤޤ�Ƥ��ޤ��� �ºݤλ��ѤǤϡ��̾��Υǡ������Υǥե���ȱ黻�ҥ��饹�ǽ�ʬ�Ǥ��� �黻�ҥ��饹���ݻ���������ͳ�ϡ��ǡ���������ˤ�ͭ�դʽ����2�İʾ���Ĥ�Τ����뤫�⤷��ʤ�����Ǥ��� �㤨�С������ͤޤ��ϼ¿����Τɤ��餫��Ȥä�ʣ�ǿ��Υǡ��������Ȥ�������礬���ꤨ�ޤ��� �����¸�����ˤϡ��ǡ������Ȥ���2�Ĥα黻�ҥ��饹�������������ǥå����������Ŭ�ڤʥ��饹�����ޤ��� �黻�ҥ��饹�ˤĤ��Ƥξܺ٤ϡ�項11.9��項35.14�Ȥ��Ƥ���������
����դ��������ݡ��Ȥ��륤��ǥå�����åɡʸ������Ǥ�B-Tree�ΤߡˤǤϡ���ά��ǽ��ASC��DESC��NULLS FIRST��NULLS LAST�����ꤷ������ǥå����Υ����Ƚ���ѹ������뤳�Ȥ��Ǥ��ޤ��� ����դ�����ǥå������������ˤ�������ˤ⥹����뤳�Ȥ��Ǥ��ޤ��Τǡ�ñ������Ф���DESC����ǥå������̾��ͭ�ѤǤϤ���ޤ��� ���Υ����Ƚ���Ϥ��Ǥ��̾�Υ���ǥå�������Ѥ��Ƽ¸��Ǥ��ޤ��� �����Υ��ץ����β��ͤϡ�SELECT ... ORDER BY x ASC, y DESC�ʤɤν�����꤬���ߤ����䤤��碌�ˤ�ä��ᤵ��륽���Ƚ�˰��פ��롢ʣ������Ф��륤��ǥå���������Ǥ������Ǥ��� NULLS���ץ����ϡ������Ƚ��������Ǥ��륤��ǥå����˴�Ť����䤤��碌�ˤ�����"NULL�Υ����Ƚ���㤯����"ư��ݡ��Ȥ���ɬ�פ��������ͭ�ѤǤ��� �ǥե���Ȥ�ư���"NULL�Υ����Ƚ��⤯����"�Ǥ���
�ۤȤ�ɤΥ���ǥå�����åɤˤ����ơ�����ǥå�������®�٤�maintenance_work_mem������˰�¸���ޤ��� ����礭���ͤ����ꤹ��ȡ��ޥ����å��֤ˤ��Ƥ��ޤ�ʤ��褦�˼ºݤ˻��ѤǤ�������̤�Ķ���ʤ��褦�ˤ��Ƥ���¤ꡢ����ǥå���������ɬ�פȤʤ��������ޤ��� �ϥå��奤��ǥå����Ǥϡ�effective_cache_size���ͤ⥤��ǥå����������֤˱ƶ���Ϳ���ޤ��� PostgreSQL�ϡ����ꥤ��ǥå�����������effective_cache_size����礭�������������ˤ�äơ�2�ĤΥϥå��奤��ǥå���������ˡ����ɤ��餫����Ѥ��ޤ��� �����η�̤����뤿��ˡ����Υѥ��������Ѳ�ǽ�ʥ����ȿ�Ǥ����ͤ����ꤵ��Ƥ��뤳�Ȥ��ǧ���Ƥ��������� �ޤ���maintenance_work_mem��effective_cache_size���¤����ޥ����RAM���̤���¾�Υץ�������ɬ�פȤ�������̤����������̤�꾮�����ʤ�褦���դ��Ƥ���������
����ǥå�����������ˤϡ�DROP INDEX����Ѥ��Ƥ���������
������PostgreSQL�ˤ�R-tree����ǥå�����åɤ�����ޤ����� GiST��åɤ���٤��礭������������ޤ���Ǥ����Τǡ����Υ�åɤϺ������ޤ����� �Ť��ǡ����١�������GiST�ؤ��Ѵ����ñ�ˤ��뤿�ᡢUSING rtree�����ꤵ�줿��硢CREATE INDEX��USING gist�Ȳ�ᤷ�ޤ���
films�ơ��֥��title���B-tree����ǥå�����������ޤ���
CREATE UNIQUE INDEX title_idx ON films (title);
��ʸ����ʸ������̤��ʤ���������ΨŪ�ˤʤ�褦�ˡ�lower(title)�����Ф��ƥ���ǥå�����������ޤ���
CREATE INDEX ON films ((lower(title)));
(������Ǥϡ�����ǥå���̾���ά���뤳�Ȥ����Ӥޤ����� ���Τ�����ƥब̾�����̾��films_lower_idx�Ȥ���̾�������֤��Ȥˤʤ�Ǥ��礦��)
�ǥե���Ȱʳ���NULL�Υ����Ƚ����ꤷ������ǥå�����������ޤ���
CREATE INDEX title_idx_nulls_low ON films (title NULLS FIRST);
�ǥե���Ȱʳ��Υե���ե���������ĥ���ǥå�����������ޤ���
CREATE UNIQUE INDEX title_idx ON films (title) WITH (fillfactor = 70);
��®������̵���ˤ���GIN����ǥå�����������ޤ���
CREATE INDEX gin_idx ON documents_table USING gin (locations) WITH (fastupdate = off);
films�ơ��֥���code����Ф��륤��ǥå�����������ޤ��� �ޤ������Υ���ǥå�����indexspace�ơ��֥��������������ޤ���
CREATE INDEX code_idx ON films (code) TABLESPACE indexspace;
�Ѵ��ؿ��η�̤��Ф���box�����ΨŪ�˻��ѤǤ���褦��point°����GiST����ǥå�����������ޤ���
CREATE INDEX pointloc ON points USING gist (box(location,location)); SELECT * FROM points WHERE box(location,location) && '(0,0),(1,1)'::box;
�оݥơ��֥�ؤν��ߤ���å������˥���ǥå�����������ޤ���
CREATE INDEX CONCURRENTLY sales_quantity_index ON sales_table (quantity);