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

5.9. �ѡ��ƥ�����˥�

PostgreSQL�ϴ���Ū�ʥơ��֥�Υѡ��ƥ�����˥󥰡�ʬ��ˤ򥵥ݡ��Ȥ��Ƥ��ޤ��� ������Ǥϡ��ǡ����١����߷פˤ����ơ��ʤ������ƤɤΤ褦�ˤ��ƥѡ��ƥ�����˥󥰤��������Τ�����⤷�ޤ���

5.9.1. ����

�ѡ��ƥ�����˥󥰤�����Ū��1�Ĥ��礭�ʥơ��֥��ʪ��Ū�˾����ʥѡ��ƥ�������ʬ���뤳�Ȥ�ؤ��ޤ��� �ѡ��ƥ�����˥󥰤Ϥ����Ĥ�������������ޤ���

���������ϡ��ơ��֥�Υ��������ȤƤ��礭���ʤ���˲��ͤ��ФƤ��ޤ��� �ơ��֥�Υѡ��ƥ�����˥󥰤ˤ�������ϥ��ץꥱ�������˰�¸���ޤ������и�Ū�˥ơ��֥�Υ��������ǡ����١��������Ф�ʪ�������Ķ���뤫�ɤ����Ȥ������Ȥ��ݥ���Ȥˤʤ�ޤ���

�����Ǥ�PostgreSQL�ϡ��ѡ��ƥ�����˥󥰤�ơ��֥�ηѾ��ˤ�ꥵ�ݡ��Ȥ��Ƥ��ޤ��� ���줾��Υѡ��ƥ�������1�Ĥοƥơ��֥�λҥơ��֥�Ȥ��ƺ�������ʤ��ƤϤ����ޤ��� �ƥơ��֥뼫�Ȥ��̾���Υơ��֥�Ȥʤꡢ���ΤΥǡ�������ɽ���뤿���¸�ߤ��ޤ��� �ѡ��ƥ�����˥󥰤����ꤹ�����ˡ��Ѿ���項5.8�򻲾Ȥ��Ƥ��������ˤˤĤ��ƾܤ����ΤäƤ���ɬ�פ�����ޤ���

�ѡ��ƥ�����˥󥰤ˤĤ��Ƽ��μ��बPostgreSQL�˼�������Ƥ��ޤ���

�ϰ�ʬ��

�ơ��֥�ϡ������Ȥʤ���⤷������Υ��åȤˤ����������"�ϰ�"��ʬ�䤵��ޤ����ۤʤ�ѡ��ƥ������˳�����Ƥ�줿�ͤ��ϰϤϽŤʤ뤳�ȤϤ���ޤ��� �㤨�С����դ��ϰϤˤ��ʬ�䤵�줿�ꡢ����Υӥ��ͥ����֥������Ȥμ��̻Ҥ��ϰϤˤ��ʬ�䤵�줿�ꤷ�ޤ���

�ꥹ��ʬ��

�����ͤ����줾��Υѡ��ƥ������˸����褦������Ū�ʥꥹ�Ȥˤ�ꡢ�ơ��֥뤬ʬ�䤵��ޤ���

5.9.2. �ѡ��ƥ�����˥󥰤μ���

�ơ��֥�Υѡ��ƥ�����˥󥰤��������ˤϡ��ʲ���ԤäƤ���������

  1. ���٤ƤΥѡ��ƥ�����󤬷Ѿ����뤳�Ȥˤʤ롢"�ޥ���"�ơ��֥��������Ƥ���������

    ���Υơ��֥�ϥǡ������Ǽ���ޤ��� ���Υơ��֥�ˤϤ��٤ƤΥѡ��ƥ��������Ф���Ŭ�Ѥ����Ĥ��Ǥʤ���и��������������ʤ��Ǥ��������� Ʊ�ͤ˥���ǥå������������������뤳�Ȥ��̣������ޤ���

  2. �ޥ����ơ��֥뤫��Ѿ����줿�������Ĥ���"��"�ơ��֥��������ޤ��� �̾�����λҥơ��֥�ϥޥ�������Ѿ����줿��ʳ��ˤ�����ɲä��ʤ��褦�ˤ��ޤ���

    �ҥơ��֥�ϡ�����������PostgreSQL�����̤Υơ��֥�Ǥ������ҥơ��֥��ѡ��ƥ������Ȥ��ƻ��Ȥ��뤳�Ȥˤʤ�ޤ���

  3. ���줾��Υѡ��ƥ������ǤΥ����ͤ�������뤿��ˡ�ʬ�䤵�줿�ơ��֥�˥ơ��֥�������ɲä��Ƥ���������

    ŵ��Ū����ϡ�

    CHECK ( x = 1 )
    CHECK ( county IN ( 'Oxfordshire', 'Buckinghamshire', 'Warwickshire' ))
    CHECK ( outletID >= 100 AND outletID < 200 )

    ���󤬡��ۤʤ�ѡ��ƥ������ˤ����Ƶ��Ĥ���Ƥ��륭���ͤδ֤ǽŤʤ̵꤬�����Ȥ��ݾڤ��Ƥ��������� �褯����ְ㤤���ϰ�����򼡤Τ褦�����ꤷ�Ƥ��ޤ����ȤǤ���

    CHECK ( outletID BETWEEN 100 AND 200 )
    CHECK ( outletID BETWEEN 200 AND 300 )

    �����ͤ�200���ɤ���Υѡ��ƥ�������°����Τ������ΤˤʤäƤ��ʤ����ᡢ����ϴְ㤤�ˤʤ�ޤ���

    �ϰ�ʬ��ȥꥹ��ʬ��δ֤˹�ʸ�ΰ㤤��̵�����Ȥ����դ��Ƥ��������� �����λ���ϵ��Ҿ�Τ�Τ����Ǥ���

  4. ���줾��Υѡ��ƥ������ˤ����ơ�¾�Υ���ǥå�����Ʊ�ͤ˥����Ȥʤ������ν���ˤ˥���ǥå�����������Ƥ��������� �ʥ����Υ���ǥå�����ɬ������ɬ�פǤ���ޤ��󤬡������Ƥ��ξ�����Ω���ޤ����⤷�����ͤ���դǤ��뤳�Ȥ�տޤ���ΤǤ���Ф��ĤǤ⡢��դ⤷���ϼ祭������򤽤줾��Υѡ��ƥ������˺������Ƥ�����������

  5. �ޤ����ޥ����ơ��֥���������줿�ǡ�����Ŭ���ʥѡ��ƥ���������Ѥ��뤿��˥ȥꥬ�⤷���ϥ롼���������Ƥ���������

  6. constraint_exclusion����ѥ�᡼����postgresql.conf���̵���ˤʤäƤ��ʤ����Ȥ��ǧ���Ƥ���������̵���Ǥ���ȡ��䤤��碌�ϻפä��Ȥ���˺�Ŭ������ޤ���

�㤨�С��絬�Ϥʥ��������꡼���ҤΥǡ����١������ۤ���Ȳ��ꤷ�Ƥ�����������Ҥϡ����줾��������Υ��������꡼�������Ʊ�ͤ������κǹⵤ�����¬���Ƥ��ޤ��� ��ǰŪ�ˡ����Τ褦�ʥơ��֥뤬ɬ�פˤʤ�ޤ���

CREATE TABLE measurement (
    city_id         int not null,
    logdate         date not null,
    peaktemp        int,
    unitsales       int
);

�ۤȤ�ɤ��䤤��碌���轵�����⤷����Ⱦǯ���Υǡ������䤤��碌���ΤǤ��뤳�Ȥ�ʬ���äƤ��ޤ��� ������ͳ�ϡ����Υơ��֥뤬�бĤ˴ؤ��륪��饤��Υ�ݡ��Ȥ�������뤳�Ȥ˼�˻��Ѥ���뤫��Ǥ��� ɬ�פʲ��Υǡ����̤򸺤餹����ˡ����3����Υǡ����Τߤ���¸���뤳�Ȥˤ��ޤ�����λϤ�˲��Υǡ����������ޤ���

���Τ褦�ʾ�硢measurement�ơ��֥���Ф���ۤʤ��׵�򤹤٤��������褦�˥ѡ��ƥ�����˥󥰤����ѤǤ��ޤ����嵭�ǽҤ٤���ˡ�ǡ��ѡ��ƥ�����˥󥰤򼡤Τ褦�����ꤷ�ޤ���

  1. �ޥ����ơ��֥�ϡ��嵭��������줿measurement�ơ��֥�Ǥ���

  2. ���ˤ��줾��η���Ф���1�ĤΥѡ��ƥ�������������ޤ���

    CREATE TABLE measurement_y2006m02 ( ) INHERITS (measurement);
    CREATE TABLE measurement_y2006m03 ( ) INHERITS (measurement);
    ...
    CREATE TABLE measurement_y2007m11 ( ) INHERITS (measurement);
    CREATE TABLE measurement_y2007m12 ( ) INHERITS (measurement);
    CREATE TABLE measurement_y2008m01 ( ) INHERITS (measurement);

    ���줾��Υѡ��ƥ������ϡ����뤷���ơ��֥�Ǥ���measurement�ơ��֥뤫��������Ѿ����Ƥ��ޤ���

    ����ϸŤ��ǡ����κ���Ȥ���������褷�ޤ��� ���Ǥ�Ť��ҥơ��֥��DROP TABLE�������η���Ф��Ƥϻҥơ��֥�������������Ǥ����ΤǤ���

  3. �Ťʤ��̵���ơ��֥�������դ���ɬ�פ�����ޤ��� �嵭�Τ褦�˥ѡ��ƥ�������ñ�˺���������⡢�ʲ��Τ褦�ˤ��٤��Ǥ��礦��

    CREATE TABLE measurement_y2006m02 (
        CHECK ( logdate >= DATE '2006-02-01' AND logdate < DATE '2006-03-01' )
    ) INHERITS (measurement);
    CREATE TABLE measurement_y2006m03 (
        CHECK ( logdate >= DATE '2006-03-01' AND logdate < DATE '2006-04-01' )
    ) INHERITS (measurement);
    ...
    CREATE TABLE measurement_y2007m11 (
        CHECK ( logdate >= DATE '2007-11-01' AND logdate < DATE '2007-12-01' )
    ) INHERITS (measurement);
    CREATE TABLE measurement_y2007m12 (
        CHECK ( logdate >= DATE '2007-12-01' AND logdate < DATE '2008-01-01' )
    ) INHERITS (measurement);
    CREATE TABLE measurement_y2008m01 (
        CHECK ( logdate >= DATE '2008-01-01' AND logdate < DATE '2008-02-01' )
    ) INHERITS (measurement);

  4. �����Ȥʤ���˥���ǥå�����ɬ�פˤʤ�Ǥ��礦��

    CREATE INDEX measurement_y2006m02_logdate ON measurement_y2006m02 (logdate);
    CREATE INDEX measurement_y2006m03_logdate ON measurement_y2006m03 (logdate);
    ...
    CREATE INDEX measurement_y2007m11_logdate ON measurement_y2007m11 (logdate);
    CREATE INDEX measurement_y2007m12_logdate ON measurement_y2007m12 (logdate);
    CREATE INDEX measurement_y2008m01_logdate ON measurement_y2008m01 (logdate);

    ����ϡ�����ʾ�Υ���ǥå������դ��ʤ����Ȥˤ��ޤ���

  5. ���ץꥱ��������INSERT INTO measurement ...��¹Ԥ����顢Ŭ�ڤʥѡ��ƥ������ơ��֥�˥ǡ�������Ѥ����褦�ˤ������Ȥ��ޤ��� ���Τ褦�ʾ��ϡ�Ŭ�ڤʥȥꥬ�ؿ���ޥ����ơ��֥�����ꤹ�뤳�Ȥˤ���ǽ�Ȥʤ�ޤ��� �⤷�ǡ������ǿ��Υѡ��ƥ������ˤΤ��ɲä������ϡ����˴�ñ�ʥȥꥬ�ؿ�����ѤǤ��ޤ���

    CREATE OR REPLACE FUNCTION measurement_insert_trigger()
    RETURNS TRIGGER AS $$
    BEGIN
        INSERT INTO measurement_y2008m01 VALUES (NEW.*);
        RETURN NULL;
    END;
    $$
    LANGUAGE plpgsql;

    �ؿ������������ǡ����Υȥꥬ�ؿ���Ƥ֥ȥꥬ��������ޤ���

    CREATE TRIGGER insert_measurement_trigger
        BEFORE INSERT ON measurement
        FOR EACH ROW EXECUTE PROCEDURE measurement_insert_trigger();

    ���ȥꥬ�ؿ����������ʤ��ƤϤ����ޤ��󡣤���ˤ�긽�ߤΥѡ��ƥ������򤤤Ĥ�ؤ����Ȥˤʤ�ޤ��� ���������ȥꥬ����Ϲ�������ɬ�פϤ���ޤ���

    �ǡ��������������顢�����Ф��Ԥ��ɲä��٤��ѡ��ƥ�������ưŪ�˷��ꤹ��褦�ˤ��������⤷��ޤ��� ����ϰʲ��Τ褦�ʤ�ä�ʣ���ʥȥꥬ�ؿ���������뤳�Ȥˤ���ǽ�Ǥ���

    CREATE OR REPLACE FUNCTION measurement_insert_trigger()
    RETURNS TRIGGER AS $$
    BEGIN
        IF ( NEW.logdate >= DATE '2006-02-01' AND
             NEW.logdate < DATE '2006-03-01' ) THEN
            INSERT INTO measurement_y2006m02 VALUES (NEW.*);
        ELSIF ( NEW.logdate >= DATE '2006-03-01' AND
                NEW.logdate < DATE '2006-04-01' ) THEN
            INSERT INTO measurement_y2006m03 VALUES (NEW.*);
        ...
        ELSIF ( NEW.logdate >= DATE '2008-01-01' AND
                NEW.logdate < DATE '2008-02-01' ) THEN
            INSERT INTO measurement_y2008m01 VALUES (NEW.*);
        ELSE
            RAISE EXCEPTION 'Date out of range.  Fix the measurement_insert_trigger() function!';
        END IF;
        RETURN NULL;
    END;
    $$
    LANGUAGE plpgsql;

    �ȥꥬ���������Ʊ���Ǥ��� ���줾���IF�ƥ��Ȥ�ѡ��ƥ�������CHECK��������Τ˰��פ����ʤ���Фʤ�ʤ����Ȥ����դ��Ƥ���������

    ���δؿ���ñ���ξ����ʣ���ˤʤ�ޤ��������ˤ˹�������ɬ�פϤ���ޤ��󡣤ʤ��ʤ���ʬ��������ä��ɲä��Ƥ������Ȥ���ǽ������Ǥ���

    注意: �ºݤˤϡ��ۤȤ�ɤ����������ֿ������ѡ��ƥ�������������ϡ����Υѡ��ƥ�������ǽ�˸������뤳�Ȥ������Ǥ�����ñ�ˡ�������ǤΤۤ�����ʬ��Ʊ�����֤ǥȥꥬ�Υƥ��Ȥ򼨤��ޤ�����

�ʾ�Τ褦�ˡ�ʣ���ʥѡ��ƥ�����󲽤ηײ�Ϥ��������DDL��ɬ�פȤʤ�ޤ����嵭����Ǥϡ��������ѡ��ƥ�������������뤳�Ȥˤʤ�ޤ�����ɬ�פȤʤ�DDL��ưŪ���������륹����ץȤ�񤯤Τ������Ǥ���

5.9.3. �ѡ��ƥ������δ���

�̾�������ǥơ��֥����Ū�ʤޤޤˤ���Ĥ��ǤϤʤ���硢�췲�Υѡ��ƥ��������뤳�Ȥˤʤ�ޤ��� �Ť��ǡ����Υѡ��ƥ������κ���俷���ǡ������������Ū�ʿ����ѡ��ƥ��������ɲäȤ����׵�Ϥ褯����ޤ��� �������������Ǥʤ���ж��ˤ�ȼ����Ȥ����̤Υǡ�����ʪ��Ū�˰�ư�������ˡ��ѡ��ƥ������¤�����뤳�ȤǤۤȤ�ɽִ�Ū�˹Ԥ����Ȥ��Ǥ��ޤ��� �ѡ��ƥ�����˥󥰤κǤ���פ������ΰ�ĤϤޤ��ˤ������Ǥ���

�Ť��ǡ�����������Ǥ��ñ����ˡ�ϡ�ñ�����פȤʤä��ѡ��ƥ������������뤳�ȤǤ���

DROP TABLE measurement_y2006m02;

�쥳���ɤ��Ȥ˺������ɬ�פ�����ޤ���Τǡ�����Ϲ�®�˲�ɴ����Υ쥳���ɤ������뤳�Ȥ��Ǥ��ޤ���

����¾���褯���Ѥ������ˡ�ϡ��ơ��֥뼫�ΤؤΥ����������¤򤽤Τޤ޻Ĥ����ޤޡ��ѡ��ƥ�������դ����줿�ơ��֥뤫��ѡ��ƥ������������뤳�ȤǤ���

ALTER TABLE measurement_y2006m02 NO INHERIT measurement;

����ˤ�ꡢ������˥ǡ������򤵤�˹Ԥ����Ȥ��Ǥ��ޤ��� �㤨�С�COPY��pg_dump�ʤɤΥġ������Ѥ��ƥǡ�����Хå����åפ��뤳�ȤϤ褯����ޤ��� �ޤ����ǡ������꾮���ʽ񼰤˽��󤷤��ꡢ¾�Υǡ�������Ԥä��ꡢ������������ꤹ�뤳�Ȥ�褯����ޤ���

Ʊ�ͤˡ��������ǡ����򰷤�����˿������ѡ��ƥ��������ɲä��뤳�Ȥ�Ǥ��ޤ��� ��Ǹ����Υѡ��ƥ������������������Ʊ���褦�ˡ��ѡ��ƥ�������դ��ơ��֥�˶��Υѡ��ƥ�������������뤳�Ȥ��Ǥ��ޤ���

CREATE TABLE measurement_y2008m02 (
    CHECK ( logdate >= DATE '2008-02-01' AND logdate < DATE '2008-03-01' )
) INHERITS (measurement);

����¾����ˡ�Ȥ��ơ��ѡ��ƥ������¤�γ����ǿ������ơ��֥������������Ŭ�ڤ˥ѡ��ƥ������Ȥ��뤳�Ȥ������ʾ��⤢��ޤ��� ����ˤ�ꡢ�ѡ��ƥ�������դ������ơ��֥���ɲä������ˡ��ǡ���������ɤ����������Ѵ����뤳�Ȥ��Ǥ��ޤ���

CREATE TABLE measurement_y2008m02
  (LIKE measurement INCLUDING DEFAULTS INCLUDING CONSTRAINTS);
ALTER TABLE measurement_y2008m02 ADD CONSTRAINT y2008m02
   CHECK ( logdate >= DATE '2008-02-01' AND logdate < DATE '2008-03-01' );
\copy measurement_y2008m02 from 'measurement_y2008m02'
-- ���餫�ν�������Ԥ����Ȥ��Ǥ��ޤ���
ALTER TABLE measurement_y2008m02 INHERIT measurement;

5.9.4. �ѡ��ƥ�����˥󥰤�����ˤ�����

����ˤ������ϡ��嵭����ˡ��������줿ʬ�䤵�줿�ơ��֥���Ф���ѥե����ޥ󥹤���夵�����䤤��碌�κ�Ŭ�����ѤǤ����㤨�С�

SET constraint_exclusion = on;
SELECT count(*) FROM measurement WHERE logdate >= DATE '2008-01-01';

����ˤ�������ͭ���ˤʤäƤ���Ȥ����ץ��ʤϤ��줾��Υѡ��ƥ�����������򸡾ڤ����ѡ��ƥ�������䤤��碌��WHERE�˰��פ���Ԥ�ޤ�Ǥ��ʤ�����˥�����󤵤��ɬ�פ�̵�����Ȥ�������褦�Ȥ��ޤ��� �ץ��ʤϤ�����������ȡ��䤤��碌�ײ褫�餽�Υѡ��ƥ�������������ޤ���

constraint_exclusion��ͭ���Ȥ������ηײ��̵���ˤ������ηײ�ΰ㤤�����餫�ˤ��뤿�ᡢEXPLAIN���ޥ�ɤ���ѤǤ��ޤ��� ���μ���Υơ��֥�������Ф���ŵ��Ū�ʺ�Ŭ������ʤ��ײ�ϰʲ��Τ褦�ˤʤ�ޤ���

SET constraint_exclusion = off;
EXPLAIN SELECT count(*) FROM measurement WHERE logdate >= DATE '2008-01-01';

                                          QUERY PLAN
-----------------------------------------------------------------------------------------------
 Aggregate  (cost=158.66..158.68 rows=1 width=0)
   ->  Append  (cost=0.00..151.88 rows=2715 width=0)
         ->  Seq Scan on measurement  (cost=0.00..30.38 rows=543 width=0)
               Filter: (logdate >= '2008-01-01'::date)
         ->  Seq Scan on measurement_y2006m02 measurement  (cost=0.00..30.38 rows=543 width=0)
               Filter: (logdate >= '2008-01-01'::date)
         ->  Seq Scan on measurement_y2006m03 measurement  (cost=0.00..30.38 rows=543 width=0)
               Filter: (logdate >= '2008-01-01'::date)
...
         ->  Seq Scan on measurement_y2007m12 measurement  (cost=0.00..30.38 rows=543 width=0)
               Filter: (logdate >= '2008-01-01'::date)
         ->  Seq Scan on measurement_y2008m01 measurement  (cost=0.00..30.38 rows=543 width=0)
               Filter: (logdate >= '2008-01-01'::date)

�����Υѡ��ƥ�����󡢤⤷���Ϥ��٤ƤΥѡ��ƥ������ǡ��ơ��֥����Τ��Ф��륷�����󥷥�륹�����ǤϤʤ�������ǥå���������󤬻��Ѥ�����ǽ��������ޤ��� �����������ǤΥݥ���Ȥϡ������䤤��碌���Ф�������Τ���˸Ť��ѡ��ƥ������򥹥���󤹤�ɬ�פϤޤä���̵���Ȥ������ȤǤ��� ����ˤ�������ͭ���ˤ����Ȥ��������ˤ��²���Ʊ���������֤��ײ�����뤳�Ȥ��Ǥ��ޤ���

SET constraint_exclusion = on;
EXPLAIN SELECT count(*) FROM measurement WHERE logdate >= DATE '2008-01-01';
                                          QUERY PLAN
-----------------------------------------------------------------------------------------------
 Aggregate  (cost=63.47..63.48 rows=1 width=0)
   ->  Append  (cost=0.00..60.75 rows=1086 width=0)
         ->  Seq Scan on measurement  (cost=0.00..30.38 rows=543 width=0)
               Filter: (logdate >= '2008-01-01'::date)
         ->  Seq Scan on measurement_y2008m01 measurement  (cost=0.00..30.38 rows=543 width=0)
               Filter: (logdate >= '2008-01-01'::date)

����ˤ�������CHECK����Τߤ�ư�������ǥå�����̵ͭ�Ǥ�ư��ʤ����Ȥ����դ��Ƥ�����������äƥ�����Υ���ǥå�����������뤳�Ȥ�ɬ�פǤϤ���ޤ��� ����ѡ��ƥ������ǥ���ǥå�����ɬ�פ��ɤ����ϡ��ѡ��ƥ������򥹥���󤹤��䤤��碌���ѡ��ƥ�����������ʬ�⤷���Ͼ�������ʬ�򥹥���󤹤�Τ��ˤ��ޤ������ԤǤϤʤ���Ԥˤ����ơ�����ǥå�������Ω���ޤ���

�¤ΤȤ�����constraint_exclusion�Υǥե���ȡʤ��Ŀ侩�ˤ�����ϡ�on�Ǥ�off�Ǥ�ʤ���partition�Ȥ�����֤�����Ǥ��� ����ˤ�ꤳ�ε�ˡ�ϡ��ѡ��ƥ�����˥󥰤��줿�ơ��֥���Ф���ư��뤳�Ȥˤʤ��䤤��碌�Τߤ�Ŭ�Ѥ����褦�ˤʤ�ޤ��� on����ˤ�ꡢ�ץ��ʤϤ��٤Ƥ��䤤��碌��CHECK����򸡾ڤ���褦�ˤʤ�ޤ��� �����ñ����䤤��碌�Ǥ�Ԥ�졢�ץ饹�ˤʤꤽ���Ǥ���ޤ���

5.9.5. ¾�Υѡ��ƥ�����˥���ˡ

Ŭ���ʥѡ��ƥ������ơ��֥�˥�����쥯�Ȥ����̤���ˡ�ϡ��ȥꥬ���ؤ��˥롼���ޥ������ơ��֥��˺������뤳�ȤǤ����㤨��

CREATE RULE measurement_insert_y2006m02 AS
ON INSERT TO measurement WHERE
    ( logdate >= DATE '2006-02-01' AND logdate < DATE '2006-03-01' )
DO INSTEAD
    INSERT INTO measurement_y2006m02 VALUES (NEW.*);
...
CREATE RULE measurement_insert_y2008m01 AS
ON INSERT TO measurement WHERE
    ( logdate >= DATE '2008-01-01' AND logdate < DATE '2008-02-01' )
DO INSTEAD
    INSERT INTO measurement_y2008m01 VALUES (NEW.*);

�롼��ϥȥꥬ���⤫�ʤꥪ���С��إåɤ�����ޤ������Ԥ��Ȥ���ष���䤤��碌���ȤΥ����С��إåɤȤʤ�ޤ��� ��äƤ�����ˡ�ϡ���������Ȥ��ä�����ͭ���Ȥʤ�ޤ��� ������¿���ξ�硢�ȥꥬ����Ѥ����������ɤ���ǽ�Ȥʤ�ޤ���

COPY�ϥ롼���̵�뤹�뤳�Ȥ����դ��Ƥ��������� �⤷�ǡ�������������Τ�COPY����Ѥ��������ϡ��ޥ����ơ��֥����������ѡ��ƥ������ơ��֥�˥��ԡ����뤳�Ȥ�ɬ�פȤʤ�Ǥ��礦�� COPY�ϥȥꥬ��ư���ޤ��� ��äƥȥꥬ����Ѥ�����ˡ��Ȥ�С����̤�COPY����Ѥ��뤳�Ȥ��Ǥ��ޤ���

�롼�����Ѥ�����ˡ�Τ⤦�ҤȤĤη����ϡ���Ϣ�Υ롼�뤬�������դ򰷤�ʤ��Ȥ��˥��顼���������ñ����ˡ���ʤ����ȤǤ��� �ǡ���������˥ޥ����ơ��֥�˰��ۤΤ�������������ޤ���

�ѡ��ƥ�����˥󥰤ϡ��ơ��֥�ηѾ��������UNION ALL�ӥ塼����Ѥ��뤳�Ȥˤ�äƤ���ѤǤ��ޤ��� �㤨�С�

CREATE VIEW measurement AS
          SELECT * FROM measurement_y2006m02
UNION ALL SELECT * FROM measurement_y2006m03
...
UNION ALL SELECT * FROM measurement_y2007m11
UNION ALL SELECT * FROM measurement_y2007m12
UNION ALL SELECT * FROM measurement_y2008m01;

�������ӥ塼��ƺ������뤳�Ȥǡ��ǡ������åȤθ��̤Υѡ��ƥ��������ɲä������������ꤹ��;ʬ�ʼ�礬�����ޤ��� �ºݤˤϡ�������ˡ�ϷѾ�����Ѥ�����ˡ����Ӥ��Ƥ����᤹�����ϤۤȤ�ɤ���ޤ���

5.9.6. �ٹ�

�ʲ��ηٹ𤬥ѡ��ƥ�������դ��ơ��֥���Ф���Ŭ�Ѥ���ޤ���

�ʲ��ηٹ�����ˤ�������Ŭ�Ѥ���ޤ���