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

14.3. ����Ū��JOIN��ǥץ��ʤ����椹��

����Ū��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�����ꤹ�������Ū�ʷ��Ƿ�������椷�������ˤ��Τɤ��餫��Ԥ��ޤ��� ���������ײ�������֤ȼ¹Ի��֤δ֤Υȥ졼�ɥ��դ�ʬ�˹Ԥ����ϡ��������̤��ͤ����ꤷ�Ƥ⹽���ޤ���