PostgreSQL 9.0.4ʸ�� | ||||
---|---|---|---|---|
前のページ | 巻戻し | 付録 F. �ɲä������⥸�塼�� | 早送り | 次のページ |
intarray�⥸�塼��������ΰ켡����������������ʴؿ��ȱ黻�Ҥ�¿�����ޤ��� �ޤ��������α黻�Ҥ���Ѥ�������ǥå��������ݡ��Ȥ��ޤ���
表 F-8. intarray�ؿ�
�ؿ� | ����ͤη� | ���� | �� | ��� |
---|---|---|---|---|
icount(int[]) | int | ����������ǿ� | icount('{1,2,3}'::int[]) | 3 |
sort(int[], text dir) | int[] | ����Υ����ȡ�dir��asc�ޤ���desc�Τ����줫�Ǥʤ���Фʤ�ޤ��� | sort('{1,2,3}'::int[], 'desc') | {3,2,1} |
sort(int[]) | int[] | ���祽���� | sort(array[11,77,44]) | {11,44,77} |
sort_asc(int[]) | int[] | ���祽���� | ||
sort_desc(int[]) | int[] | �߽祽���� | ||
uniq(int[]) | int[] | ���ܤ����ʣ���� | uniq(sort('{1,2,3,2,1}'::int[])) | {1,2,3} |
idx(int[], int item) | int | item�˰��פ��������ֹ��¸�ߤ��ʤ����0�� | idx(array[11,22,33,22,11], 22) | 2 |
subarray(int[], int start, int len) | int[] | start����Ϥޤ�len�Ĥ����Ǥ���ʬ���� | subarray('{1,2,3,2,1}'::int[], 2, 3) | {2,3,2} |
subarray(int[], int start) | int[] | start����Ϥޤ���ʬ���� | subarray('{1,2,3,2,1}'::int[], 2) | {2,3,2,1} |
intset(int) | int[] | ñ�����Ǥ��������� | intset(42) | {42} |
表 F-9. intarray�黻��
�黻�� | ����� | ���� |
---|---|---|
int[] && int[] | boolean | �Ťʤꡣ����֤Ǿ��ʤ��Ȥ�1�Ĥζ������Ǥ�������true���֤��ޤ��� |
int[] @> int[] | boolean | ��ͭ�����դ������դ������ޤ���true���֤��ޤ��� |
int[] <@ int[] | boolean | ��ͭ����롣���դ������դ�����˴ޤޤ����true���֤��ޤ��� |
# int[] | int | ����������ǿ� |
int[] # int | int | ����ǥå�����idx �ؿ���Ʊ���Ǥ��� |
int[] + int | int[] | ��������Ǥ�ץå����������������ɲáˤ��ޤ� |
int[] + int[] | int[] | �����Ϣ��ʱ����������������������ɲáˤ��ޤ� |
int[] - int | int[] | ���鱦�դΰ����˰��פ�����ܤ������ޤ� |
int[] - int[] | int[] | ���դ����鱦�դ��������Ǥ������ޤ� |
int[] | int | int[] | ������ޤȤ�ޤ� |
int[] | int[] | int[] | �����ޤȤ�ޤ� |
int[] & int[] | int[] | ����ζ�����ʬ |
int[] @@ query_int | boolean | �����䤤��碌�����������true�ʸ�ҡ� |
query_int ~~ int[] | boolean | �����䤤��碌�����������true��@@�θ���黻�ҡ� |
��PostgreSQL 8.2�����Ǥϡ���ͭ�黻��@>��<@�Ϥ��줾��@��~�ȸƤФ�Ƥ��ޤ����� ������̾���Ϥޤ����ѤǤ��ޤ������ѻ�ͽ��Ǥ��ꡢ�ǽ�Ū�ˤϤʤ��ʤ�ޤ��� �Ť�̾���ϥ����δ����ǡ��������������äƤ�������Ȥ�ȿ�ФǤ��뤳�Ȥ����դ��Ƥ�����������
��ͭ�黻��@>��<@�ϡ���������������Τߤ�ư����Ȥ߹��߱黻�ҤϤɤ������Ф��Ƥ�ư������������Ʊ��̾����PostgreSQL���Ȥ߹��߱黻�ҤȤ��줾��ۤ������Ǥ��� ���פʰ㤤�ϡ�intarray�α黻�Ҥ϶�������ϲ���ޤ�Ǥ��ʤ��ȹͤ������Ǥ��� �����GIN����ǥå����䤤��碌�ο����Ȱ��פ��Ƥ��ޤ������̾�δ�ͭ�ο���Ū������Ȥϰ��פ��Ƥ��ޤ���
@@�����~~�黻�Ҥϡ������ò������ǡ�����query_int��ɽ��������䤤��碌�����������ɤ��������ޤ��� �䤤��碌�ϡ������餯&(������), | (������), and ! (����)�黻�Ҥ��Ȥ߹�碌�ƻ��Ѥ������������Ǥ��Ф��Ƹ�������������ͤ���ʤ�ޤ��� �㤨��1&(2|3)�Ȥ����䤤��碌��1����ӡ�2��3�Τ����줫��ޤ�����˰��פ��ޤ���
intarray��&&��@>��<@��@@�黻�Ҥ˴ؤ����̾��������������Ʊ�ͤ˥���ǥå������ݡ��Ȥ����ޤ���
2�Ĥ�GiST����ǥå����黻�ҥ��饹������ޤ��� gist__int_ops�ʥǥե���Ȥǻ��Ѥ���ޤ��ˤϾ��浬�����ǿ��Υǡ������åȤ�Ŭ���ޤ��� ������gist__intbig_ops�Ϥ���礭�ʽ�̾����Ѥ��ޤ��Τǡ��絬�ϥǡ������åȡʤĤޤꡢ�ۤʤä������ͤ�¿��������ˤΥ���ǥå����ˤ��Ŭ���Ƥ��ޤ��� �������ȹ��ߤ���ĵհ��̤���ä�RD Tree�ǡ�����¤����Ѥ��ޤ���
�ޤ���Ʊ���黻�Ҥݡ��Ȥ���ǥե���ȤǤϤʤ�GIN�黻�ҥ��饹gin__int_ops��¸�ߤ��ޤ���
GiST�����GIN����ǥå����Τɤ�������뤫�ϡ��������������GiST��GIN������Ū����ǽ��ħ�˰�¸���ޤ��� �ޤȤ��ȡ�GIN����ǥå�����GiST����ǥå�������®�˸������뤳�Ȥ��Ǥ��ޤ��������ۤޤ��Ϲ�������®�Ǥ��� ���Τ��ᡢGIN����Ū�ǡ�����Ŭ����GiST�����ˤ˹��������ǡ�����Ŭ���ޤ���
-- a message can be in one or more "sections"
CREATE TABLE message (mid INT PRIMARY KEY, sections INT[], ...);
-- create specialized index
CREATE INDEX message_rdtree_idx ON message USING GIST (sections gist__int_ops);
-- select messages in section 1 OR 2 - OVERLAP operator
SELECT message.mid FROM message WHERE message.sections && '{1,2}';
-- select messages in sections 1 AND 2 - CONTAINS operator
SELECT message.mid FROM message WHERE message.sections @> '{1,2}';
-- the same, using QUERY operator
SELECT message.mid FROM message WHERE message.sections @@ '1&2'::query_int;
�������ǥ��쥯�ȥ�ʲ���contrib/intarray/bench�ˤϥ٥���ޡ�����켰������ޤ��� �ʲ��Τ褦�˼¹Ԥ��ޤ���
cd .../bench createdb TEST psql TEST < ../_int.sql ./create_test.pl | psql TEST ./bench.pl
bench.pl������ץȤˤ�¿���Υ��ץ������ޤ��� �����ϰ������դ����˼¹Ԥ����ɽ������ޤ���
Teodor Sigaev (<[email protected]>
)��Oleg Bartunov (<[email protected]>
)�ˤ�ꤹ�٤Ƥκ�Ȥ��ʤ���ޤ�����
����ʤ����ˤĤ��Ƥ�http://www.sai.msu.su/~megera/postgres/gist/�Ȥ��Ƥ���������
Andrey Oktyabrski�Ͽ������ؿ����黻�Ҥ��ɲäˤ����������餷����Ȥ�Ԥ��ޤ�����