¾�ΥС�������ʸ�� �� 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

7.8. ��ʬ����ǥå���

��ʬ����ǥå����Ȥϡ��ơ��֥�Υ��֥��åȤ˹��ۤ���륤��ǥå����Ǥ������֥��åȤϡ���ʬ����ǥå������Ҹ��פȸ������P���������ޤ������νҸ�ξ����������Ԥ��Ф��ƤΤߥ���ǥå�������������ޤ���

��ʬ����ǥå��������Ѥ�������Ū�ϡ��ѽ��ͤ��Ф��ƥ���ǥå����κ�����Ԥʤ�ʤ����ȤǤ���(�ơ��֥����Το��ѡ�����Ȥ�����)�ѽ��ͤ򸡺������䤤��碌�Ǥϸ�������ǥå�������Ѥ��ʤ����ᡢ�������Ф��ƥ���ǥå�����������뤳�ȤϤ��ޤ��̣������ޤ�����ʬ����ǥå����ϡ����̤Υ���ǥå������⥵�������������ʤ�ޤ��Τǡ�����ǥå�������Ѥ����䤤��碌���®�ˤʤ�ޤ����ޤ����ơ��֥빹������ɬ�����⤹�٤ƤΥ���ǥå����򹹿����ʤ����ᡢ������Ȥ��᤯�ʤ�ޤ��� Example 7-1�Ǥϡ����γ�ǰ�˴�Ť���ǽ���ץꥱ��������ɽ���Ƥ��ޤ���

Example 7-1. �������ͤ��������ʬ����ǥå���������

��Ȥ��ơ����⥦���֤Υ����������Ϥ�ǡ����١�������Ͽ���Ƥ���������ꤷ�Ƥߤޤ��礦��¿���Υ��������ϼ����IP���ɥ쥹���ϰϤǤ��礦�����㤨�Х������륢�åפ���³���Ƥ���Ұ��Υ������������ϼ���IP���ɥ쥹���ϰϤǤϤʤ��Ǥ��礦���ҳ�����Υ����������˸�������ΤǤ���С�����Υ��֥ͥåȤ˳�������IP���ɥ쥹���ϰϤ˥���ǥå������������ɬ�פϤ���ޤ���

�����Τ褦�ʥơ��֥�����ꤷ�Ƥߤޤ��礦��

CREATE TABLE access_log (
    url varchar,
    client_ip inet,
    ...
);

������˹礦��ʬ����ǥå������������ˤϡ������Τ褦�ʥ��ޥ�ɤ�¹Ԥ��ޤ���

CREATE INDEX access_log_client_ip_ix ON access_log (client_ip)
    WHERE NOT (client_ip > inet '192.168.100.0' AND client_ip < inet '192.168.100.255');

���Υ���ǥå�������Ѥ��롢����Ū���䤤��碌�ϼ��Τ褦�ʤ�ΤǤ���

SELECT * FROM access_log WHERE url = '/index.html' AND client_ip = inet '212.78.10.32';

�դˡ����Υ���ǥå�������ѤǤ��ʤ��䤤��碌�ϼ��Τ褦�ʤ�ΤǤ���

SELECT * FROM access_log WHERE client_ip = inet '192.168.100.23';

���Τ褦����ʬ����ǥå����ϡ����餫�����ѽ��ͤ����Ǥ��뤫���ΤäƤ���ɬ�פ�����ޤ����ͤ�ʬ�ۤ�(���ץꥱ����������������)��ͭ�ǡ����ĸ����(���֤��ФäƤ��Ѳ����ʤ�)��硢���Τ褦����ʬ����ǥå����κ������񤷤�����ޤ��󡣤��������ѽ��ͤ����ޤ��ޥ����ɤ��줿�ǡ�����ñ�ʤ��̤Ȥ��Ʒ��ꤵ����硢���ƥʥ󥹤��ȤƤ����Ѥˤʤ�ޤ���

�ѽ��ͤ򥤥�ǥå��������ӽ�����⤦1�Ĥ���ˡ�Ȥ��ơ� Example 7-2�ˤ⤢��褦�ˡ�����Ū���䤤��碌��ɬ�פʤ���Τ򥤥�ǥå��������������ˡ���ͤ����ޤ���������ˡ�������Ͼ嵭�Τ�Τ�Ʊ���Ǥ���������ǥå��������Ѥ�ͭ���ʾ��Ǥ��ɬ�פΤʤ���Ρפϥ���ǥå�������Ѥ��ʤ����Ȥ����������⤢�ꤨ�ޤ������Τ褦�ˡ���ʬ����ǥå��������������ˤϺٿ������դ�ʧ�������ڤ�Ԥʤ�ɬ�פ�����ޤ���

Example 7-2. ɬ�פΤʤ��ͤ����������ʬ����ǥå����κ���

��Ȥ��ơ���ʧ�Ѥ���ʸ���̤��ʧ��ʸ�񤫤�ʤ�1�ĤΥơ��֥��ͤ��ޤ��������Ƥ��Υơ��֥�ˤ�̤��ʧ����ʸ��γ������������������Ĥ�����ʬ�ؤΥ�����������¿���ä��Ȥ��ޤ������Τ褦�ʾ�硢̤��ʧ�ιԤ��Ф��ƥ���ǥå�����������뤳�Ȥˤ�äơ��ѥե����ޥ󥹤���夵���뤳�Ȥ��Ǥ��ޤ�������ǥå����κ����ϡ��ʲ��Τ褦�ʥ��ޥ�ɤ���Ѥ��ޤ���

CREATE INDEX orders_unbilled_index ON orders (order_nr)
    WHERE billed is not true;

�ʲ��ϡ����Υ���ǥå�������Ѥ����䤤��碌�Ǥ���

SELECT * FROM orders WHERE billed is not true AND order_nr < 10000;

�������ʤ��顢order_nr�˴ط���̵���䤤��碌�Ǥ⤳�Υ���ǥå�������ѤǤ��ޤ��������Ϥ����䤤��碌����Ǥ���

SELECT * FROM orders WHERE billed is not true AND amount > 5000.00;

�����ƥब����ǥå������Τ򸡺����ʤ���Фʤ�ʤ����ᡢ amount����ʬ����ǥå������������������Ӥ��Ƹ�Ψ���ɤ��Ȥϸ����ޤ��󡣤��������⤷̤��ʧ��ʸ��ǡ��������Ū���ʤ�������ʬ����ǥå�����Ȥ�������Ψ���ɤ��ʤ�Ǥ��礦��

�������䤤��碌�ϥ���ǥå�������Ѥ��ʤ���Ǥ���

SELECT * FROM orders WHERE order_nr = 3501;

��ʸ�ֹ� 3501�ϻ�ʧ�Ѥߤ��⤷��ޤ��󤷡�̤��ʧ���⤷��ʤ�����Ǥ���

Example 7-2�����ʬ����褦�ˡ�����ǥå������������줿��̾�ȽҸ�ǻ��Ѥ���Ƥ�����̾�ϰ��פ��Ƥ���ɬ�פϤ���ޤ��� PostgreSQL�Ǥϡ�Ǥ�սҸ����ʬ����ǥå����򥵥ݡ��Ȥ��Ƥ��ޤ��Τǡ�����ǥå������������ơ��֥���󤬴�Ϣ����Ƥ�������к�������ޤ�������������ʬ����ǥå������������ݤνҸ�ϡ�����ǥå����λ��Ѥ�ͭ�פ��䤤��碌�ξ��Ȱ��פ���ɬ�פ�����ޤ����Ĥޤꡢ��ʬ����ǥå����ϡ������ƥ�ˤ�ä��䤤��碌�� WHERE �������Ū�˥���ǥå����νҸ�����ƤϤ�����Ȥ��Ǥ����Ƚ�Ǥ��줿�䤤��碌�ǤΤ߻��Ѳ�ǽ�Ǥ��� PostgreSQL�ˤϡ��ۤä��񼰤ǽ񤫤줿�Ҹ줬Ʊ���Τ�ΤǤ��뤫�ɤ��������Ū��Ƚ���Ǥ���褦�ʡ��������줿����������ǽ�Ϥ���ޤ���(������ͳ�Ȥ��Ƥϡ����Τ褦������������μ���������Ǥ�������ǤϤʤ����ºݤ����ѤˤϤ��ޤ�ˤ�¹�®�٤��٤��Ȥ������Ȥ��������ޤ���)�ǡ����١��������ƥ�ϡ�x < 1�פϡ�x < 2�פ��̣����Ȥ����褦��ñ�����������ǧ�����ޤ���������ʳ��ϡ��Ҹ�����䤤��碌�ξ�P�ϰ��פ��Ƥ��ʤ���Фʤ�ޤ��󡣰��פ��Ƥ��ʤ����ϡ�����ǥå��������Ѳ�ǽ��ǧ������ޤ���

3�Ĥ����ʬ����ǥå����λ�����Ǥϡ��䤤��碌�ǥ���ǥå������������Ѥ��ޤ��󡣤ĤޤꡢExample 7-3�ˤ���褦�ˡ��ơ��֥�Υ��֥��åȤȤ��ư�ե���ǥå������������Ȥ������ȤǤ�������ϡ�����ǥå����νҸ�����������٤ƤιԤ����������ʤ��Ԥ����󤹤뤳��̵������դ��ͤǤ��뤳�Ȥ������ޤ���

Example 7-3. ��դ���ʬ����ǥå����κ���

�ƥ��Ȥη�̤���Ǽ����Ƥ���ơ��֥뤬����Ȥ��ޤ���Ϳ����줿��̾(subject)�ȥ������å�(target)���Ȥ߹礻���Ф��ơ�"����"�Ȥʤ������ͤ�1�Ĥ����ǡ����Ԥˤʤ��Τ�ʣ�����뤳�Ȥ��ݾڤ������Ȥ��ޤ��������Ϥ��Υ��ޥ�ɤǤ���

CREATE TABLE tests (subject text,
                    target text,
                    success bool,
                    ...);
CREATE UNIQUE INDEX tests_success_constraint ON tests (subject, target)
    WHERE success;

�嵭�Τ褦�ʡ������ξ�礬���ʤ������Ԥξ�礬¿���褦�ʥ��������ä�ͭ���Ǥ���

�Ǹ�ˡ���ʬ����ǥå����ϥǡ����١��������ƥ���䤤��碌�¹ԥץ���������񤭤�����ˤ�Ȥ��ޤ�������ǥå�������Ѥ��٤��Ǥʤ����Ǥ⡢�ü�ʥǡ���ʬ�ۤξ��Ǥϡ�����ǥå�������Ѥ��Ƥ��ޤ���礬�������ޤ������Τ褦�ʾ�硢����ǥå�������Ѥ��٤��ǤϤʤ��䤤��碌���Ф��Ƥ��Υ���ǥå�������ѤǤ��ʤ�����褦�����ꤹ�뤳�Ȥ��Ǥ��ޤ����̾PostgreSQL�Ϲ���Ū�ʥ���ǥå����λ��Ѥ�Ԥʤ��ޤ�(�㤨�С��褯�����ͤθ����ξ��ˤϥ���ǥå�������Ѥ��ʤ��ʤɤǤ������Ҥ���Ǥϥ���ǥå������礭���򾮤�����������Τ�Τǡ�����ǥå����λ��Ѥ��������뤿��Τ�ΤǤϤ���ޤ���)�����˴ְ�ä��ײ�����򤹤�ΤǤ���С��Х����򤪴ꤤ���ޤ���

��ʬ����ǥå������������Ȥ������Ȥϡ��䤤��碌�¹ԥץ��ʤ�Ʊ�����μ�����äƤ��ơ��äˡ����ĥ���ǥå�����ͭ�פǤ��뤫���ΤäƤ���Ȥ������Ȥ��̣���ޤ������Τ褦���μ������뤿��ˤϡ��и���PostgreSQL�ǤϤɤΤ褦�˥���ǥå������¹Ԥ���Ƥ��뤫���μ���ɬ�פȤʤ�ޤ���¿���ξ�硢��ʬ����ǥå������̾�Υ���ǥå�������ͭ�פʥ������ϴ��Ǥ���

��ʬ����ǥå����˴ؤ�����ܺ٤�The case for partial indexes�� Partial indexing in POSTGRES: research project��Generalized Partial Indexes�ʤɤ򻲾Ȥ��Ʋ�������