1
の最適化、私は GROUP_CONCATクエリ
files
フィールドが0
または012可能な3つの分野
メッセージ
- idmessage
- テキストと
messages
テーブルを持っていますの場合、message does not have files attached
と1
の場合はの場合は0
に設定されます。その後、私は
messages_files
三つのフィールドを持つテーブルmessages_files
- ID
idmessage
ファイル
idはちょうど主要である必要がありキー、
idmessage
はメッセージのID、file
はファイルの名前です。
(もしあれば)メッセージとそのファイルをリストしたいと思います。
SELECT m.*, GROUP_CONCAT(mf.file SEPARATOR ',') AS fileList FROM messages m LEFT JOIN messages_files mf ON mf.idmessage = m.idmessage GROUP BY m.idmessage;
私の質問は:次のクエリは正常に動作しているメッセージは、ファイルを持っていないときメッセージがが0に設定されているテーブル内のファイルフィールドが、私はそれらの上でJOINを「スキップ」することができますので、クエリを高速化しますか?
ありがとうございます!
編集:message_files(それは外部キーです)idmessageフィールドにインデックスを持っています。
このクエリで* EXPLAIN *を使用すると、メインクエリでALL型が返され、キーは使用されません。 – Koas