選択…foo_id in(select id from…)効率[閉じた
-
27-10-2019 - |
質問
i)これら2つの間でより効率的なものは次のとおりです。
Select A.* from A, B where A.b_id = B.id
また
Select A.* from A where A.b_id in (select id from B);
ii)どうしますか Select A.* from A where A.b_id in (select id from B);
本当に動作しますか?それは内部的にのようなものに翻訳されていますか Select A.* from A, B where A.b_id = B.id
またはそうです (select id from B)
の各行について評価されましたか?
他のヒント
これはより効率的です:
Select A.* from A, B where A.b_id = B.id
はい、 Select A.* from A where A.b_id in (select id from B)
作品。
そして、いや、 (select id from B)
各行については評価されません。一度だけ評価されます。
通常、結合は使用するよりも速いです IN
オペレーター。
そのような種類の偽の集会がどこから来たのかはわかりませんが、使用してテーブルに参加する必要があります ON
, 、最後にある場所の塊ではありません。
SELECT A.*
FROM A
INNER JOIN B ON (A.b_id = B.id)
MySQLバージョン、テーブルのサイズ、インデックスの存在など、さまざまな要因に依存します。
実行してみてください EXPLAIN ...
, 、またはサポートされている場合はさらに良い、 EXPLAIN EXTENDED ...
に続く SHOW WARNIGS;
MySQLが何をしているのかを理解しようとします。
所属していません StackOverflow