MYSQL IN или несколько условий

У меня есть простой запрос, который возвращает записи на основе поля, 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');

Спасибо за помощь.

13.10.2009 10:53:32
2 ОТВЕТА
РЕШЕНИЕ

Я подозреваю, что оптимизатор сведет оба запроса к одной и той же вещи, и если это так, я предпочитаю второй вариант, так как он короче и, следовательно, его легче анализировать.

Вы должны попробовать EXPLAINвыполнить каждый запрос с реальными данными для подтверждения.

4
13.10.2009 10:55:33

Лучший способ оптимизировать ваш запрос, используя команду EXPLAIN для примера

ОБЪЯСНИТЬ ВЫБОР idИЗ tblГДЕ statusНЕ ВХОДЯЩИХ («3», «7», «9»); и посмотреть время исполнения

1
14.10.2009 04:06:45