2017-05-12 5 views
0

クエリ1これらの2つのクエリのどちらが効率的か、または最も優れていますか?

SELECT m.Name, p.Name, p.Price 
    FROM Manufacturers m INNER JOIN Products p 
     ON m.Code = p.Manufacturer 
WHERE p.Price IN (SELECT MAX(pp.Price) FROM Products pp GROUP BY pp.Manufacturer); 

1は、少ない時間を取る必要があり、クエリ2

select m.Name as ManufName, p.Name as ProductName, p.Price as ProductPrice 
    from Manufacturers m inner join Products p 
     on m.Code = p.Manufacturer 
     where p.Price = (select max(sub_p.Price) 
            from Products sub_p 
            where m.Code = sub_p.Manufacturer); 

+4

時間のかかるものは何が見えないのですか? – mason

+2

これらのクエリは同等ではありません。それらがあった場合、答えは使用しているSQLエンジンに依存します。 – mazaneicha

+0

してください、私はデータの小さなセットでこれらのクエリを実行していたトロイの答えへのコメントを参照してください。私はそれがデータベースエンジンとテーブルの構成(インデックス...)に依存すると理解していますが、これらの2つのクエリが同じ列を使用しているのと同じですが、単純な広範な説明が必要なものであるとしても、 – pascalb

答えて

1

です。テーブル、インデックスなどのサイズ。それらを両方試して比較してください。

しかし、あなたのデータベースは何も知らないので、私はクエリー1がうまくいくはずだと推測します。クエリ2にはcorrelated sub queryがあり、オプティマイザでネストされたループが使用されます。

+0

理論、ありがとう – pascalb

関連する問題