私はDBを管理しています。このクエリを作成するためのよりクールな方法があるかどうかを知りたいと思います。SQLクエリが非常に遅い - どうすれば改善できますか?
私の実際のクエリ:
SELECT * FROM mytable
LEFT JOIN table1 AS m1 ON mytable.idA=m1.K
LEFT JOIN table1 AS m2 ON mytable.idB=m2.K
LEFT JOIN table1 AS m3 ON mytable.idC=m3.K
LEFT JOIN table1 AS m4 ON mytable.idD=m4.K
LEFT OUTER JOIN table2 AS t1 ON mytable.idK1= t1.idK1 AND mytable.idK2= t1.idK2
LEFT OUTER JOIN table3 ON t1.idT = table3.idT
WHERE m1.K = "my_value" OR m2.K = "my_value" OR m3.K = "my_value" OR m4.K = "my_value"
私は、フィールドIDA、IDB、IDCまたはIDDの値を持つことができるので、4が同じ他のテーブルの上に合流させるクエリを持っています。 その後、私は他のテーブルと他の2つの結合を行います。
私の質問は
このコードを改善することはできますか?よりスマートなやり方やそれに従うより良いロジックがありますか? 理論的な説明があっても、ありがとうございます。 mytable.idA
、mytable.idB
、mytable.idC
、mytable.idD
、table1.K
、table2.idT
、table2.idT
:
テーブルに適切なインデックスがありますか? – scaisEdge
私は(1)idAなどを索引付けすることを確認し、(2)ON IDA = K OR idB = K OR idC = K OR idD = K'で1つの結合を行います。あなたが欲しいもの。それについて考える。 –
と名前で列を呼び出します。 *が高すぎる – NinjaDeveloper