2011-03-03 20 views
0

私はこの複数の単純な結合対。複数の単純な選択は

ID  post_id  meta_key  meta_value 
1  1   key_01  val 
2  1   key_02  val 
3  1   key_03  val 

のように見えるmetaテーブルを持っていると私はすべての3つのキーと値を取得したいです。 JOINを使用してSELECTを使用するのが遅くなりますか?例えば、それはそんなに簡単になるだろう、JOIN:

SELECT M1.meta_value AS key_01, M2.meta_value AS key_02, M3.meta_value AS key_04 
FROM `meta` AS M1 
    JOIN `meta` M2 ON M2.post_id = 1 AND M2.meta_key = 'key_02' 
    JOIN `meta M3 ON M3.post_id = 1 AND M3.meta_key = 'key_03' 
WHERE M1.meta_key = 'key_01' 

私はどんなことをテストしていないが、あなたのアイデアを得る必要があります。

+0

なぜカラムを必要とするのですか?あなたが望む3つのmeta_key値に基づいてレコードをフェッチし、アプリケーションが値を適切に引き出すようにする簡単なクエリです。 –

答えて

1

Ileive JOINSはネストされたSELECTSを使用するより効率的です。また、外部キー列(結合列)を索引付けすると、パフォーマンスも向上します。したがって、post_idとmeta_keyにインデックスをポップします。インデックスはINSERTのパフォーマンスを低下させる可能性がありますので、これを考慮してください。

1

サブセレクションやユニオンを実行するときよりも、ジョインを使用するときにmysqlエンジンの方が良いクエリプランを作成できる可能性が高いと思います。

関連する問題