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 が張ってあるものとします。