2017-07-19 8 views
0

私は2つのテーブルfoo2とfoo3を以下の画像で持っています。これらのテーブルには一意のcolumn - > idがあります。MySQL JOINとMySQL INのサブクエリー

テーブルfoo2は:

enter image description here

テーブルfoo3:私は同じIDを持つ2つのテーブルからデータを選択したい

enter image description here

。これらのクエリは、同じデータを返す

SELECT 
    foo2.id, 
    foo2.`name` 
FROM 
    foo2 
INNER JOIN foo3 ON (foo2.id = foo3.id); 

:QUERY2

SELECT 
    foo2.id, 
    foo2.`name` 
FROM 
    foo2 
WHERE foo2.id IN (SELECT id FROM foo3); 

:私はこの

Query1をのような2クエリを持っています。私はどちらが良いか知りたいですか?どれが効率的ですか?

回答ありがとうございます。

+0

データによって異なります。大規模なデータの場合、通常は結合が良くなります。 –

+0

query1 cuz 'join'実行のために実行 – Jenish

+0

' EXPLAIN'を使って、クエリプランナーがあなたに伝えるものを見てください:https://dev.mysql.com/doc/refman/5.7/en/using-explain.html –

答えて

1

どちらが良いかを知りたい場合は、データとシステムで2つのクエリをテストします。

2つのクエリはではなく、であることに注意することが重要です。データに同じ値が返されることがありますが、foo3に重複があると、JOINは重複した行を返す可能性があります。

個人的な好みとして、私は、2つの(私はfoo3.idが一意であることを知っているので、例えば)同じ行を返すとしている場合JOINではなくINを使用する傾向があります。

0

Query2のようにすることができます。第二のアプローチでは、あなたによって言及として

INNER JOINテーブルfoo3は、数百万行を持っていたシナリオでは良いかもしれません。従ってここで句は、より多くの時間がかかるかもしれませんINNER JOIN