MySQL 2つのフィールドでテーブルを結合する方法


102

dateidフィールドを持つ2つのテーブルがあります。両方の分野で参加したい。私は試した

JOIN t2 ON CONCAT(t1.id, t1.date)=CONCAT(t2.id, t2.date)

それは機能しますが、非常に遅いです。これを行うより良い方法はありますか?

回答:




27
SELECT * 
FROM t1
JOIN t2 USING (id, date)

おそらく両方の条件にのみ一致する結果が必要な場合は、INNEER JOINまたはt2.idがnullではない場所を使用する必要があります。


1
基本的に、速度が遅いのは、具象がインデックスを持たない新しい値を計算するため、直接条件の方が速いはずです。このクエリでも遅くなる場合は、インデックスが存在するかどうかを確認します。2つのフィールドに対して1つのインデックスを作成することも意味があります。
Eugene Kaurov 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.