と最適化のJOINMYSQL LEFT CASE
がどのように私はこのSELECTを最適化することができます(今)私はCOLASCEを(使用していることに感謝)...私は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を使うのですか?あなたは何を最適化したいですか?あなたはCOALESCEが何をしているのかはっきりしていますか?はいの場合、それはあなたが探しているものではないのはなぜですか? – fancyPants
CASE/IFのLEFT JOINを置き換えることが可能かどうかを知りたい。 mysqlのほうが速いでしょうか? – kbitdn
@tombomとkbitdn:私はこの質問の答えはありませんが、私もそれに興味があります...私は同様の問題があります... – Chris