[前][次][番号順一覧][スレッド一覧]

mysql:13132

From: "TOYOSHIMA,Masayuki" <"TOYOSHIMA,Masayuki" <mtoyo@xxxxxxxxxx>>
Date: Thu, 29 Jun 2006 11:03:30 +0900
Subject: [mysql 13132] IN(a,b) と IN(a) OR IN(b)

豊島と申します。

次の三つを手元のデータベースで試みたところ、EXPLAIN の結果も(勿論クエリ
の結果も)同じになりますが、

a) SELECT somefield FROM somedb WHERE (afield IN ('A','B','C'));

b) SELECT somefield FROM somedb WHERE (afield IN ('A') OR afield IN ('B') OR afield IN('C'));

c) SELECT somefield FROM somedb WHERE (afield = 'A' OR afield = 'B' OR afield = 'C');

クエリの結果(集合)が同じになるのは当然として、mysql でのパフォーマンス上
も、これらは常に全く等価のものなのでしょうか。

それとも、たまたま手元の小さなデータで同じ explain が返っただけで、敢え
て言えば a) の方が速い、とか、探索の仕組みも違い、パフォーマンス上の差も
あるのが本来のものなのでしょうか。

afield には (non-unique の) index が張ってあるものとします。

[前][次][番号順一覧][スレッド一覧]