tbl_picklistテーブル最適化SQLクエリは、
id value
1 John
2 Mumbai
3 San Diego
4 CA
5 Jerry
tbl_userテーブル
id picklist_id_name email
1 1 [email protected]
2 8 [email protected]
tbl_profileテーブル
id user_id picklist_id_addr picklist_id_addr2 designation
1 1 3 5 Dev
3 2 7 3 QA
選択リストを使用すると、アドレスの値を取得するテーブルである単一のテーブルに参加しますaddress2と名前、 私は希望のresを与えるクエリを書いたULT
SELECT
u.email,
p1.value AS username,
p2.value AS addr1,
p3.value AS addr2
FROM tbl_user u
LEFT JOIN tbl_picklist AS p1
ON u.picklist_id_name = p1.id
LEFT JOIN tbl_profile pr
ON pr.user_id = u.id
LEFT JOIN tbl_picklist AS p2
ON p2.id = pr.picklist_id_addr
LEFT JOIN tbl_picklist AS p3
ON p3.id = pr.picklist_id_addr2
結果:
email username addr1 addr2
[email protected] John Mumbai San Diego
[email protected] Jerry CA Mumbai
結果の上に得るために、私は3を書き込むために必要 は1がオンに参加して、私は結果だけを受けることが可能な他の方法があり、ピックリストのテーブルに参加しますピックリストテーブル? 私はアプリケーションでこの種のテーブル構造を持っています。多くの値はpicklistテーブルに格納されています。この種のクエリを実行するには多くの時間がかかります。
問題はジョインではなく、クエリをチューニングしていないことです。まだインデックスを適用しましたか? –
@TimBiegeleisenはいすべてのテーブルにインデックスがあります – sarvesh
インデックスを持つカラムはどれですか?ピックリストテーブルの –