2017-12-28 11 views
0

最初のテーブルのIDに基づいて2番目のテーブルから名前をフェッチしたいクエリを設計したいと思います。次の2つのクエリを使用して結果を得ることができます。効率的なMySqlクエリ

私はどちらが効率的であるかを知っているか、速い結果と理由を教えてください。最適化が優れているのでNormalyは、明示的な結合

SELECT r1.id, c1.categoryName 
FROM request r1 
LEFT JOIN category c1 
ON r1.categoryId = c1.id 
order by r1.dateCreated DESC; 


SELECT id, (SELECT categoryName FROM category WHERE id 
= categoryId) 
FROM request r1 
order by dateCreated DESC; 
+2

Sub QueryよりJOINバッターのために最初のクエリを使用することができ、URL https:// stackoverflow.com/questions/2577174/join-vs-sub-queryを訪問することができます –

+1

最初のクエリをうまく使います。サブクエリは、レコード数が増えるにつれてサーバ負荷を増加させます。 –

+0

サブクエリの代わりにジョインを使用します。ありがとう。 –

答えて

0

は、行くためのより高速な方法ですが、あなたがより読みやすいSQLクエリに移動しようとすることができますので、nowdaysのoptimisersは、すべての時間を良くなっています。

あなたがマニュアルでこれを見つけることができます(13.2.10.11書き換えサブクエリ接合としての):これは、サーバーが最適化することができるかもしれないので、「LEFT [OUTER]が同等のサブクエリよりも速くすることができ、JOIN言うhttps://dev.mysql.com/doc/refman/5.7/en/rewriting-subqueries.html

それはより良い "。

複雑なケースではサブクエリが好きですが、読みやすさが向上し、SQLのメンテナンス性が向上します。サブクエリは論理的に正しい方法で問題を解決します。

関連する問題