我知道以下查詢返回相同的:當T1有多個T2且條件爲T2時,將T2連接到T1而不是T1到T2會更有效嗎?或者它是一樣的?
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是否自動檢測並優化這些查詢,並且這兩個查詢有類似的性能?
這是優化的工作... –
那麼你應該做的基準測試,但是從我讀過的第一個應用的優化將重新排序聯接爲最有效。在只有兩張桌子的情況下,我無法想象即使沒有優化程序,它也會有所作爲... –