私は以下のクエリは、その返還を知っている:T1がT2に多くのT2を保持し、T2に条件が保持されている場合、T1からT2ではなくT2からT1に結合する方が効率的ですか?それとも同じですか?
SELECT `cimgs`.*
FROM `cimgs`
INNER JOIN `cimgs_tags` ON `cimgs_tags`.`cimg_id` = `cimgs`.`id`
WHERE `cimgs_tags`.`tag_id` IN (1, 2, 3, 4, 5) AND (cimgs.id != 1)
SELECT `cimgs`.*
FROM `cimgs_tags`
INNER JOIN `cimgs` ON `cimgs`.`id` = `cimgs_tags`.`cimg_id`
WHERE `cimgs_tags`.`tag_id` IN (1, 2, 3, 4, 5) AND (cimgs.id != 1)
しかし、一見、私は二番目の条件を確認したときに最初のものは、条件をチェックする前に、各タグにcimgs
テーブルを複製することを言うだろう...
MySQLがこれを自動的に検出して最適化するかどうかわかりませんが、これらの2つのクエリのパフォーマンスは同じですか?
... –
はまあ、あなたがテストするためのベンチマークを行う必要があり、「どのように」を決定し、しかし、私は最初の1何を読んでから最適化の適用は、結合を最も効率的に並べ替えることです。ちょうど2つのテーブルの場合、私はそれがオプティマイザなしでさえ違いがあるとは想像できません。 –