PostgreSQL 9.2.4ʸ�� | ||||
---|---|---|---|---|
前のページ | 上に戻る | 第 14章��ǽ�˴ؤ���ҥ�� | 次のページ |
����Ū��JOIN��ʸ��Ȥä��䤤��碌�ץ��ʤ���������Ǥ��ޤ��� �ɤ����Ƥ����������Ȥ�����ˤʤ�Τ����ޤ������طʤ�ɬ�פ�����ޤ���
ñ����䤤��碌���㤨��
SELECT * FROM a, b, c WHERE a.id = b.id AND b.ref = c.id;
�Ǥϡ��ץ��ʤϼ�ͳ��Ϳ����줿�ơ��֥��Ǥ�դν�Ƿ�礹�뤳�Ȥ��Ǥ��ޤ��� �㤨�С�WHERE����a.id = b.id��ȤäƤޤ�A��B���礷��¾��WHERE����ȤäƤ��η��ơ��֥��C���礹��Ȥ��ä��ײ��Ω�Ƥ뤳�Ȥ��Ǥ��ޤ��� ���뤤�ϡ�B��C���礷�����η�̤�A���礹�뤳�Ȥ�Ǥ��ޤ��� ���뤤�ϡ�A��C���礷�����η�̤�B���礹�뤳�Ȥ�Ǥ���Ǥ��礦�� ������������Ǥϸ�Ψ���ɤ�����ޤ��� �ʤ��ʤ顢���κ�Ŭ����Ԥ������Ŭ�ѤǤ����郎WHERE��ˤʤ��Τǡ�A��C����ľ�Ѥ�����뤫��Ǥ��� ��PostgreSQL�Υ��������塼���Ǥϡ����Ϥ��٤�2�ĤΥơ��֥�δ֤ǹԤ��뤿�ᡢ���Τ褦�ˤ���1�ĤҤȤķ�̤��äƤ����ʤ���Фʤ�ޤ��� ���פʤΤϡ������ΰ�ä�������ˡ�ϰ�̣Ū�ˤ�Ʊ����̤ʤΤǤ������¹ԥ����Ȥ��礭���ۤʤ��ǽ��������Ȥ������ȤǤ��� �Ǥ����顢�ץ��ʤϺǤ��Ψ���ɤ��ײ��õ������˲�ǽ�ʷײ�٤Ƹ������ޤ���
�����оݤ���������2��3�ĤΥơ��֥�ʤ鿴�ۤ���ۤɷ��μ����¿������ޤ��� ���������ơ��֥����������Ȳ�ǽ�ʷ��ο��ϻؿ��ؿ�Ū�������Ƥ����ޤ��� 10���ٰʾ�˥ơ��֥뤬������ȡ����٤Ƥβ�ǽ����ߤĤ֤���õ�����뤳�ȤϤ�Ϥ����Ū�ǤϤʤ��ʤ�ޤ��� 6��7�ĤΥơ��֥�Ǥ����⡢�ײ�����������֤�̵��Ǥ��ʤ��ʤ�ޤ��� �ơ��֥�ο���¿�����ϡ�PostgreSQL�Υץ��ʤϤ���ߤĤ֤���õ�����顢�¤�줿��ǽ��������õ����������Ū��ΨŪ��õ���ؤ��ڤ��ؤ��ޤ��� ���ڤ��ؤ������ͤ�geqo_threshold�¹Ի��ѥ��������ꤵ��ޤ����� ����Ūõ����û�����֤�õ����Ԥ��ޤ�����ɬ�������Ŭ�ʷײ�Ĥ���Ȥϸ¤�ޤ���
������礬�ޤޤ��褦���䤤��碌�Ǥϡ��̾�Ρ������˷����ץ��ʤ������;�Ϥ��������ʤ�ޤ��� �㤨�С����Τ褦���䤤��碌��ͤ��ޤ���
SELECT * FROM a LEFT JOIN (b JOIN c ON (b.ref = c.id)) ON (a.id = b.id);
�����䤤��碌�θ����������Ҥ����ɽ��Ū�ˤϻ��Ƥ���褦�˻פ��ޤ�����B��C�η���̤ιԤ�Ŭ�礷�ʤ�A�γƹԤ����Ϥ���ʤ���Фʤ�ʤ����ᡢ��̣Ū�ˤϰۤʤ�ޤ��� �������äơ������Ǥϥץ��ʤˤϷ���˴ؤ��������;�Ϥ�����ޤ��� �ޤ�B��C���礷�����η�̤�A���礷�ʤ���Фʤ�ʤ��ΤǤ��� ���������櫓�ǡ������䤤��碌�ǤϷײ��Ω�Ƥ�Τ��פ�����֤����������û���ʤ�ޤ��� ����¾�ξ�硢�ץ��ʤ������ʷ����ʣ������Ǥ����ǽ��������ޤ��� �㤨�С��ʲ���ͤ��Ƥߤޤ���
SELECT * FROM a LEFT JOIN b ON (a.bid = b.id) LEFT JOIN c ON (a.cid = c.id);
���ξ�硢A�����B�ȷ�礷�Ƥ�C�ȷ�礷�Ƥ�ͭ���Ǥ��� �������Ǥϡ�FULL JOIN�Τߤ������˷�������¤��ޤ��� LEFT JOIN��RIGHT JOIN��ޤࡢ�ۤȤ�ɤμ´Ķ��Ǥϡ����餫�γ�ĥ�˺�Ĵ�����뤳�Ȥ��Ǥ��ޤ���
����Ū��������繽ʸ��INNER JOIN��CROSS JOIN�������Τʤ�JOIN�ˤϡ���̣Ū�ˤ�FROM������ϥ�졼����������Ʊ���Ǥ��� �������äơ���������ޤ���
�ۤȤ�ɤμ����JOIN�ϴ����˷�������ޤ���PostgreSQL�䤤��碌�ץ��ʤˡ����٤Ƥ�JOIN����Ф��ƤȤꤢ������������¤����뤳�Ȥ��Ǥ��ޤ��� �㤨�С��ʲ���3�Ĥ��䤤��碌������Ū�ˤ�Ʊ��Ǥ���
SELECT * FROM a, b, c WHERE a.id = b.id AND b.ref = c.id; SELECT * FROM a CROSS JOIN b CROSS JOIN c WHERE a.id = b.id AND b.ref = c.id; SELECT * FROM a JOIN (b JOIN c ON (b.ref = c.id)) ON (a.id = b.id);
���������ץ��ʤ�JOIN�ν��֤���褦����������硢2���ܤ�3���ܤ��䤤��碌�Ϻǽ�Τ�Τ���û�����֤Ƿײ��Ω�Ƥ뤳�Ȥ��Ǥ��ޤ��� ���θ��̤Ϥ��ä�3�ĤΥơ��֥�Ǥϵ��ˤ���ۤɤΤ�ΤǤϤ���ޤ���¿���Υơ��֥���礹��ݤˤϺǸ����ߤιˤˤʤ뤫�⤷��ޤ���
�ץ��ʤ���Ū������Ū��JOIN�����ߤ������˽��碌��ˤϡ�join_collapse_limit�¹Ի��ѥ�����1�����ꤷ�Ƥ��������� �ʰʲ���¾�μ�������ͤˤĤ����������ޤ�����
�������֤����뤿��ˡ����������«������ɬ�פϤ���ޤ��� �ʤ��ʤ顢ñ���FROM�ꥹ�Ȥι������JOIN�黻�Ҥ�ȤäƤ��ʤ�����Ǥ��� �㤨�С�������Ǥ���
SELECT * FROM a CROSS JOIN b, c, d, e WHERE ...;
join_collapse_limit = 1�Ȥ�����硢�ץ��ʤ϶���Ū��¾�Υơ��֥�ȷ�礹������A��B���礷�ޤ���������ʳ��ˤĤ��Ƥ��ä˹�«�Ϥ���ޤ��� ������Ǥϡ�����θ����5�γ���ʬ��1�˸���ޤ���
����������ˡ�ǥץ��ʤθ����������ä��뤳�Ȥϡ��ײ�������֤�û�̤ȥץ��ʤ��Ф���ͥ�줿�䤤��碌�ײ�ؤ������դ���ξ���Τ����ͭ�Ѥʵ�ˡ�Ǥ��� �ץ��ʤ����ä������ǥե���Ȥ�����ΤǤ���С�JOIN��ʸ��ͳ�Ǥ���ɤ����֤�����褦�˶������뤳�Ȥ��Ǥ��ޤ��� ������������ɤ����֤����Ƥ���Ȥ���������ޤ��� ����ˤϼ¸����뤳�Ȥ�ޤ���
�ײ�������֤˱ƶ�����̩�ܤ˴�Ϣ��������Ȥ��ơ����䤤��碌�ο��䤤��碌���ޤ���ळ�Ȥ�����ޤ��� �㤨�С��ʲ���ͤ��Ƥߤޤ���
SELECT * FROM x, y, (SELECT * FROM a, b, c WHERE something) AS ss WHERE somethingelse;
�������������ϡ�����ޤ�ӥ塼����Ѥ���ݤ˸���ޤ��� ���Υӥ塼��SELECT�롼��ϥӥ塼�Ȥ���Ȥ������������졢��Τ褦���䤤��碌���������ޤ��� �̾�ץ��ʤ����䤤��碌����䤤��碌���ޤ���ߡ��ʲ����������ޤ���
SELECT * FROM x, y, a, b, c WHERE something AND somethingelse;
������̾���䤤��碌�ηײ�����Ӻ���������ͥ�줿�ײ��������ޤ��� ���㤨�С�������WHERE����X��A�˷�礹��褦�ˤʤꡢ�ޤ�A��¿���ιԤ���������ޤ��� ����ˤ�ꡢ���䤤��碌�δ���������Ū���Ϥ����פˤʤ�ޤ����� ��������Ʊ���˷ײ�������֤����ä��ޤ��� ���ξ�硢2�Ĥ�3�̤�η�����꤫��5�̤�η������ˤʤ�ޤ��� ������ϻؿ��ؿ�Ū�����ä��뤿�ᡢ������礭�ʰ㤤�ˤʤ�ޤ��� �ץ��ʤ��絬�Ϥʷ�縡������ǹԤ��ͤޤ�ʤ��褦�ˡ��⤷from_collapse_limit�Ĥ�FROM���ܤ����䤤��碌��ȯ�����Ƥ��ޤ��������䤤��碌���ޤ���ߤ��������ޤ��� ���μ¹Ի��ѥ������ͤ�岼��Ĵ�����뤳�ȤǷײ�������֤ȷײ�μ���ȥ졼�ɥ��դ��뤳�Ȥ��Ǥ��ޤ���
ξ�ԤϤۤȤ��Ʊ�����Ȥ�Ԥ����ᡢfrom_collapse_limit��join_collapse_limit�ϻ����褦��̾���ˤʤäƤ��ޤ��� ���������䤤��碌��"ʿó��"��ץ��ʤ����ĹԤ��������椷���⤦����������Ū�ʷ���ʿó���ĹԤ��������椷�ޤ��� �̾join_collapse_limit��from_collapse_limit��Ʊ���ͤ����ꤹ�������Ū�ʷ������䤤��碌��ư���Ʊ���ˤ���ˤ���join_collapse_limit��1�����ꤹ�������Ū�ʷ��Ƿ�������椷�������ˤ��Τɤ��餫��Ԥ��ޤ��� ���������ײ�������֤ȼ¹Ի��֤δ֤Υȥ졼�ɥ��դ�ʬ�˹Ԥ����ϡ��������̤��ͤ����ꤷ�Ƥ���ޤ���