質問

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が何をしているのかを理解しようとします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top