1

status特定の値を持たないフィールドに基づいてレコードを返す単純なクエリがあります。引数として、フィールドが値 1、2、3...10 を持つことができ、値 3、7、9 を持たないすべてのレコードを返したいとしましょう。次のうちどれを使用するのが最適でしょうか?

オプション1。

SELECT `id` FROM `tbl` WHERE (`status` != '3' AND `status` != '7' AND `_status` != '9')

オプション 2。

SELECT `id` FROM `tbl` WHERE `status` NOT IN ('3','7','9');

助けてくれてありがとう。

4

2 に答える 2

4

オプティマイザーは両方のクエリを同じものに減らすと思います。それが正しい場合は、2 番目のオプションの方が短く、解析しやすいため、2 番目のオプションを好みます。

EXPLAIN確認するために、実際のデータを使用して各クエリを実行してみてください。

于 2009-10-13T10:55:33.873 に答える
1

例として EXPLAIN コマンドを使用してクエリを最適化する最良の方法

EXPLAIN SELECT idFROM tblWHERE statusNOT IN ('3','7','9'); そして実行時間を見てください

于 2009-10-14T04:06:45.707 に答える