同じデータを取得するための 2 つの選択肢があると思われるものから選択しようとしています。
対象の ID を持つ 1 つのテーブルと、それらの ID のデータを持つ互いに類似した 4 つのテーブルのセットがあります。各 ID の行を取得したら、それらを使用して最大のステータス フィールドや最小の日付フィールドなどを (4 つのテーブルにわたって) 取得します。
このクエリは、4 つのテーブルの結合に対する 1 つの結合、または 4 つの結合の結合として構造化されていることがわかります。どちらがより効率的ですか? FWIW、最初のほうが理解しやすく、おそらく維持しやすいと思います。
2 つの選択肢のスペルアウト:
UNION 結合された 4 つのテーブルのサブセレクトに対して idTable を結合します。
select ss.id, ss.study, ss.status, ss.date
from ( -- subselect ss
select tx.id, tx.study, tx.status, tx.date
from table_tx tx
UNION
select cfu.id, cfu.study, cfu.status, cfu.date
from table_cfu cfu
UNION
select sfu.id, sfu.study, sfu.status, sfu.date
from table_sfu sfu
UNION
select bsl.id, bsl.study, bsl.status, bsl.date
from table_bsl bsl
) ss
inner join
idTable id on id.id = ss.id AND id.study = ss.study
4 つのそれぞれに対して結合された idTable の共用体:
select tx.id, tx.study, tx.status, tx.date
from table_tx tx
inner join
idTable id on id.id = tx.id AND id.study = tx.study
UNION
select cfu.id, cfu.study, cfu.status, cfu.date
from table_cfu cfu
inner join
idTable id on id.id = cfu.id AND id.study = cfu.study
UNION
select sfu.id, sfu.study, sfu.status, sfu.date
from table_sfu sfu
inner join
idTable id on id.id = sfu.id AND id.study = sfu.study
UNION
select bsl.id, bsl.study, bsl.status, bsl.date
from table_bsl bsl
inner join
idTable id on id.id = bsl.id AND id.study = bsl.study
または、これら以外のより良い選択肢はありますか?