2017-07-01 12 views
0

なぜMySQLのクエリSql "IN"は単純な `field_name` =" some "より遅いです。どうして?

SELECT ... WHERE `field_name`="some"; 

は、単純なfield_nameは=「一部」は、単純なライン・バイ・ライン検索を使用しているが、バイナリ検索を使用しています「の」

SELECT ... WHERE `field_name` IN("some"); 

その後、より速く処理されます。私は正しい、私はいない?

PS:< 100行の表でテストしました。たぶんINは "離陸"にもっと時間を費やしますが、大きなテーブルではより速く動作しますか?

関連するquastion - バイナリ検索は、IN値またはテーブルの行に適用されるか、または両方に適用されますか?

+0

'field_name'はインデックスに登録されていますか? – RiggsFolly

+0

@RiggsFolly はい、それは '私はあなたを理解している場合 – Solembum

+0

それはインデックスのインデックスを使用しています – RiggsFolly

答えて

0

MySQLのINステートメントは、テーブル/結果セットのすべての単一の行と比較される可能な値の配列を前提としています。 WHERE句は単一の値の比較を使用しますが、索引(使用可能な場合)を使用し、mysqlはほとんどの場合問合せを最適化します。

関連する問題