我花了一些時間試圖讓這個工作用SELECT CASE,但我失敗了......(感謝給我使用COLASCE()現在)MYSQL LEFT JOIN優化與CASE
我如何能優化這個SELECT通過使用CASE/IF語句?這是從字段選擇的不同表格快速查詢的方式嗎?
SELECT a.folderid, a.foldername, a.contenttype, COALESCE(b.descriptor, c.descriptor, d.descriptor, e.descriptor, f.descriptor) as descriptor
FROM t_folders a
LEFT JOIN t_files b
ON a.contenttype = 'file' AND a.contentid = b.fileid
LEFT JOIN t_links c
ON a.contenttype = 'link' AND a.contentid = c.linkid
LEFT JOIN t_extfiles d
ON a.contenttype = 'extfile' AND a.contentid = d.extfileid
LEFT JOIN t_videos e
ON a.contenttype = 'video' AND a.contentid = e.videoid
LEFT JOIN t_exams f
ON a.contenttype = 'exam' AND a.contentid = f.examid
WHERE a.folderid = $folderId
ORDER BY a.folderid DESC
你想達到什麼目的?爲什麼使用CASE或IF?你想優化什麼?你明白什麼是聯盟?如果是的話,爲什麼它不是你要找的? – fancyPants 2012-03-17 13:43:34
我想知道是否有可能替換這些LEFT JOINs CASE/IF。它可以更快的MySQL? – kbitdn 2012-03-18 11:39:02
@tombom和kbitdn:我沒有這個問題的答案,但我也會對它感興趣...我也有類似的問題... – Chris 2012-03-28 12:11:28