PostgreSQL 9.3.2ʸ�� | ||||
---|---|---|---|---|
前のページ | 上に戻る | 第 5章�ǡ������ | 次のページ |
PostgreSQL�ϴ���Ū�ʥơ��֥�Υѡ��ƥ�����˥�ʬ��ˤݡ��Ȥ��Ƥ��ޤ��� ������Ǥϡ��ǡ����١����߷פˤ����ơ��ʤ������ƤɤΤ褦�ˤ��ƥѡ��ƥ�����˥��������Τ�����⤷�ޤ���
�ѡ��ƥ�����˥�����Ū��1�Ĥ��礭�ʥơ��֥��ʪ��Ū�˾����ʥѡ��ƥ�������ʬ���뤳�Ȥ�ؤ��ޤ��� �ѡ��ƥ�����˥Ϥ����Ĥ�������������ޤ���
����ξ����ˤ����ơ��䤤��碌�Υѥե����ޥ���Ū�˲�������ޤ��� ����Ū�ˤϡ�����������¿���ơ��֥���ιԤ�ñ��ѡ��ƥ������ޤ��ϰ����Υѡ��ƥ��������˼���뤳�ȤǤ��� �ѡ��ƥ�����˥ϥ���ǥå�������Ƭ������֤�����������ǥå������������������ޤ��� ���Τ��ᡢ����ǥå�����Τ褯���Ѥ������ʬ��������ˤ����ޤ�䤹���ʤ�ޤ���
�䤤��碌�乹����ñ��ѡ��ƥ�����������ʬ�˥������������硢����ǥå����������ȥơ��֥����Τ��Ϥäƻ��𤷤������ॢ�������ɤ�������ˡ����Υѡ��ƥ������Υ�������륹�����Ȥ��뤳�Ȥ��Ǥ�����ǽ�ϲ������ޤ���
���λ��꤬�ѡ��ƥ�������߷פ˹礦�褦�˷ײ褵��Ƥ���С����ǤΥ����ɤ��������ѡ��ƥ��������ɲä����ˤ�äƤʤ�����ǽ��������ޤ��� ALTER TABLE NO INHERIT��DROP TABLE��ξ���Ȥ��������⤺�äȹ�®�Ǥ��� �ޤ��������Υ��ޥ�ɤ����̤�DELETE�ˤ�ä�ȯ������VACUUM�Υ����С��إåɤ������ɤ��ޤ���
��ä��˻��Ѥ���ʤ��ǡ����ϡ��²����٤�������ǥ����˰ܹԤǤ��ޤ���
���������ϡ��ơ��֥�Υ��������ȤƤ��礭���ʤ���˲��ͤ��ФƤ��ޤ��� �ơ��֥�Υѡ��ƥ�����˥ˤ�������ϥ��ץꥱ�������˰�¸���ޤ������и�Ū�˥ơ��֥�Υ��������ǡ����١��������Ф�ʪ�������Ķ���뤫�ɤ����Ȥ������Ȥ��ݥ���Ȥˤʤ�ޤ���
�����Ǥ�PostgreSQL�ϡ��ѡ��ƥ�����˥�ơ��֥�ηѾ��ˤ�ꥵ�ݡ��Ȥ��Ƥ��ޤ��� ���줾��Υѡ��ƥ�������1�Ĥοƥơ��֥�λҥơ��֥�Ȥ��ƺ�������ʤ��ƤϤ����ޤ��� �ƥơ��֥뼫�Ȥ��̾���Υơ��֥�Ȥʤꡢ���ΤΥǡ�������ɽ���뤿���¸�ߤ��ޤ��� �ѡ��ƥ�����˥����ꤹ�����ˡ��Ѿ���項5.8�Ȥ��Ƥ��������ˤˤĤ��ƾܤ����ΤäƤ���ɬ�פ�����ޤ���
�ѡ��ƥ�����˥ˤĤ��Ƽ��μ��बPostgreSQL�˼�������Ƥ��ޤ���
�ơ��֥�ϡ������Ȥʤ���⤷������Υ��åȤˤ����������"�ϰ�"��ʬ�䤵��ޤ����ۤʤ�ѡ��ƥ������˳�����Ƥ�줿�ͤ��ϰϤϽŤʤ뤳�ȤϤ���ޤ��� �㤨�С����դ��ϰϤˤ��ʬ�䤵�줿�ꡢ����Υӥ��ͥ����֥������Ȥμ��̻Ҥ��ϰϤˤ��ʬ�䤵�줿�ꤷ�ޤ���
�����ͤ����줾��Υѡ��ƥ������˸����褦������Ū�ʥꥹ�Ȥˤ�ꡢ�ơ��֥뤬ʬ�䤵��ޤ���
�ơ��֥�Υѡ��ƥ�����˥��������ˤϡ��ʲ���ԤäƤ���������
���٤ƤΥѡ��ƥ�����Ѿ����뤳�Ȥˤʤ롢"�ޥ���"�ơ��֥��������Ƥ���������
���Υơ��֥�ϥǡ������Ǽ���ޤ��� ���Υơ��֥�ˤϤ��٤ƤΥѡ��ƥ��������Ф���Ŭ�Ѥ����Ĥ��Ǥʤ���и��������������ʤ��Ǥ��������� Ʊ�ͤ˥���ǥå������������������뤳�Ȥ��̣������ޤ���
�ޥ����ơ��֥뤫��Ѿ����줿�������Ĥ���"��"�ơ��֥��������ޤ��� �̾�����λҥơ��֥�ϥޥ�������Ѿ����줿��ʳ��ˤ�����ɲä��ʤ��褦�ˤ��ޤ���
�ҥơ��֥�ϡ�����������PostgreSQL�����̤Υơ��֥�Ǥ������ҥơ��֥��ѡ��ƥ������Ȥ��ƻ��Ȥ��뤳�Ȥˤʤ�ޤ���
���줾��Υѡ��ƥ������ǤΥ����ͤ�������뤿��ˡ�ʬ�䤵�줿�ơ��֥�˥ơ��֥�������ɲä��Ƥ���������
ŵ��Ū����ϡ�
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���ɤ���Υѡ��ƥ�������°����Τ������ΤˤʤäƤ��ʤ����ᡢ����ϴְ㤤�ˤʤ�ޤ���
�ϰ�ʬ��ȥꥹ��ʬ��δ֤˹�ʸ�ΰ㤤��̵�����Ȥ����դ��Ƥ��������� �����λ���ϵ��Ҿ�Τ�Τ����Ǥ���
���줾��Υѡ��ƥ������ˤ����ơ�¾�Υ���ǥå�����Ʊ�ͤ˥����Ȥʤ������ν���ˤ˥���ǥå�����������Ƥ��������� �ʥ����Υ���ǥå�����ɬ������ɬ�פǤ���ޤ��������Ƥ��ξ�����Ω���ޤ����⤷�����ͤ���դǤ��뤳�Ȥ�տޤ���ΤǤ���Ф��ĤǤ⡢��դ⤷���ϼ祭������줾��Υѡ��ƥ������˺������Ƥ�����������
�ޤ����ޥ����ơ��֥���������줿�ǡ�����Ŭ���ʥѡ��ƥ���������Ѥ��뤿��˥ȥꥬ�⤷���ϥ롼���������Ƥ���������
constraint_exclusion����ѥ�����postgresql.conf���̵���ˤʤäƤ��ʤ����Ȥ��ǧ���Ƥ���������̵���Ǥ���ȡ��䤤��碌�ϻפä��Ȥ���˺�Ŭ������ޤ���
�㤨�С��絬�Ϥʥ�����������ҤΥǡ����١������ۤ���Ȳ��ꤷ�Ƥ�����������Ҥϡ����줾��������Υ���������������Ʊ�ͤ������κǹⵤ�����¬���Ƥ��ޤ��� ��ǰŪ�ˡ����Τ褦�ʥơ��֥뤬ɬ�פˤʤ�ޤ���
CREATE TABLE measurement ( city_id int not null, logdate date not null, peaktemp int, unitsales int );
�ۤȤ�ɤ��䤤��碌���轵�����⤷����Ⱦǯ���Υǡ������䤤��碌���ΤǤ��뤳�Ȥ�ʬ���äƤ��ޤ��� ������ͳ�ϡ����Υơ��֥뤬�бĤ˴ؤ��륪��饤��Υ�ݡ��Ȥ�������뤳�Ȥ˼�˻��Ѥ���뤫��Ǥ��� ɬ�פʲ��Υǡ����̤餹����ˡ����3����Υǡ����Τߤ���¸���뤳�Ȥˤ��ޤ�����λϤ�˲��Υǡ����������ޤ���
���Τ褦�ʾ�硢measurement�ơ��֥���Ф���ۤʤ���٤��������褦�˥ѡ��ƥ�����˥����ѤǤ��ޤ����嵭�ǽҤ٤���ˡ�ǡ��ѡ��ƥ�����˥Τ褦�����ꤷ�ޤ���
�ޥ����ơ��֥�ϡ��嵭��������줿measurement�ơ��֥�Ǥ���
���ˤ��줾��η���Ф���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�������η���Ф��Ƥϻҥơ��֥�������������Ǥ����ΤǤ���
�Ťʤ��̵���ơ��֥�������դ���ɬ�פ�����ޤ��� �嵭�Τ褦�˥ѡ��ƥ�������ñ�˺���������⡢�ʲ��Τ褦�ˤ��٤��Ǥ��礦��
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);
�����Ȥʤ���˥���ǥå�����ɬ�פˤʤ�Ǥ��礦��
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);
����ϡ�����ʾ�Υ���ǥå������դ��ʤ����Ȥˤ��ޤ���
���ץꥱ��������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��ưŪ���������륹����ץȤ�Τ������Ǥ���
�̾�������ǥơ��֥����Ū�ʤޤޤˤ���Ĥ��ǤϤʤ���硢�췲�Υѡ��ƥ��������뤳�Ȥˤʤ�ޤ��� �Ť��ǡ����Υѡ��ƥ������κ���俷���ǡ������������Ū�ʿ����ѡ��ƥ��������ɲäȤ�����Ϥ褯����ޤ��� �������������Ǥʤ���ж��ˤ�ȼ����Ȥ����̤Υǡ�����ʪ��Ū�˰�ư�������ˡ��ѡ��ƥ������¤�����뤳�ȤǤۤȤ�ɽִ�Ū�˹Ԥ����Ȥ��Ǥ��ޤ��� �ѡ��ƥ�����˥κǤ���פ������ΰ�ĤϤޤ��ˤ������Ǥ���
�Ť��ǡ�����������Ǥ��ñ����ˡ�ϡ�ñ�����פȤʤä��ѡ��ƥ������������뤳�ȤǤ���
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;
����ˤ������ϡ��嵭����ˡ��������줿ʬ�䤵�줿�ơ��֥���Ф���ѥե����ޥ���夵�����䤤��碌�κ�Ŭ�����ѤǤ����㤨�С�
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����ڤ���褦�ˤʤ�ޤ��� �����ñ����䤤��碌�Ǥ�Ԥ�졢�ץ饹�ˤʤꤽ���Ǥ���ޤ���
Ŭ���ʥѡ��ƥ������ơ��֥�˥�����쥯�Ȥ����̤���ˡ�ϡ��ȥꥬ���ؤ��˥롼���ޥ������ơ��֥��˺������뤳�ȤǤ����㤨��
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;
�������ӥ塼��ƺ������뤳�Ȥǡ��ǡ������åȤθ��̤Υѡ��ƥ��������ɲä������������ꤹ��;ʬ�ʼ�礬�����ޤ��� �ºݤˤϡ�������ˡ�ϷѾ�����Ѥ�����ˡ����Ӥ��Ƥ����᤹�����ϤۤȤ�ɤ���ޤ���
�ʲ��ηٹ𤬥ѡ��ƥ�������դ��ơ��֥���Ф���Ŭ�Ѥ���ޤ���
���٤Ƥ�CHECK������ߤ���¾�Ǥ��뤫�ɤ�����ư�dz�ǧ������ˡ�Ϥ���ޤ��� �ѡ��ƥ�����������������Ϣ�դ���줿���֥������Ȥ�����⤷���Ͻ������륳���ɤ������������������������������������Ǥ���
�����Ǽ����������ޤϡ��ԤΥѡ��ƥ���������ѹ����ʤ����⤷���Ͼ��ʤ��Ȥ�¾�Υѡ��ƥ������˰�ư���뤳�Ȥ��ᤵ���ۤɤ��ѹ����ʤ����Ȥ��ꤷ�Ƥ��ޤ��� �̤Υѡ��ƥ������˰ܤ�褦��UPDATE�ϡ�CHECK����ˤ�꼺�Ԥ���Ǥ��礦�� ���Τ褦�ʾ����ˤϡ�Ŭ�ڤʹ����ȥꥬ��ѡ��ƥ������ơ��֥�����ꤷ�ޤ��� ����������ˤ�������¤�������ʣ���ˤʤ�ޤ���
�⤷��ư��VACUUM�⤷����ANALYZE���ޥ�ɤ���Ѥ��Ƥ�����ϡ����줾��Υѡ��ƥ������Ǹ��̤˼¹Ԥ��뤳�Ȥ�˺��ʤ��Ǥ��������� �ʲ��Τ褦�ʥ��ޥ�ɤ�
ANALYZE measurement;
�ޥ����ơ��֥�Τ߽������뤳�Ȥˤʤ�ޤ���
�ʲ��ηٹ�����ˤ�������Ŭ�Ѥ���ޤ���
����ˤ��������䤤��碌��WHERE�礬���(�ޤ��ϳ������鶡�뤵�줿�ѥ���)��ޤ�Ǥ����Ȥ��ˤΤ�ư��ޤ����㤨�С�CURRENT_TIMESTAMP
�Τ褦����immutable�ؿ����Ф�����Ӥϡ��ؿ��η���ͤ��ɤΥѡ��ƥ������˳������뤫��¹Ի��˥ץ��ʤ��Τ뤳�Ȥ�����ʤ����ᡢ��Ŭ���Ǥ��ޤ���
�ѡ��ƥ������������ñ�ˤ��Ƥ����Ƥ����������������ʤ��ȥץ��ʤϡ��ѡ��ƥ�������Ȥ�ɬ�פ��ʤ����Ȥ�Ω�ڤǤ��ޤ��� ���Ҥ���Ǽ������Ȥ��ꡢ�ꥹ��ʬ��Τ���˴�ñ�����������Ѥ��Ƥ����������ޤ��ϰ�ʬ��Τ���˴�ñ���ϰϥƥ��Ȥ���Ѥ��Ƥ��������� ��ü���ᤤ�ɤ���ˡ�ϡ��ѡ��ƥ�����˥����ѡ��ƥ���������B-tree����ǥå���������ǽ�ʱ黻�Ҥ��Ѥ����������ӤΤߤ�ޤ�Ǥ��뤳�ȤǤ���
�ޥ����ơ��֥�Τ��٤ƤΥѡ��ƥ������Τ��٤Ƥ�����ϡ�����ˤ������ǻ����ޤ��� ��äƥѡ��ƥ������ο���¿���ʤ���䤤��碌�ײ�λ��֤����ʤ����ä��ޤ��� �����ε��Ѥ���Ѥ����ѡ��ƥ�����˥ϡ������餯100�ĤޤǤΥѡ��ƥ������Ǥ��ޤ�ư��ޤ��� �����Υѡ��ƥ���������Ѥ��뤳�Ȥ��Ƥ���������