Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток.
Есть поле field tinyint(1)
В нем доступны значения
-1 0 1
выборка идет WHERE field != -1 но мне кажется что с точки зрения производительности, если стоит INDEX по этому полю, это не совсем хорошо.
Есть ли варианты, которые работают быстрее?
WHERE field=0 OR field=1
по сути должно быть быстрее (нашел 0 в индексе и больше не проверяем)
Но не уверен - посоветуйте, гуру.
Спасибо
Неактивен
С использованием индекса теоретически оптимальным должен быть вариант WHERE field > -1, но на практике выборка скорее всего будет быстрее без использования индекса. Для индексов с таким низким cardinality чаще всего выгоднее обойти всю таблицу последовательно, чем обойти 2/3 таблицы, но перескакивая по дереву.
Неактивен
Примерно та же ситуация, поэтому напишу здесь.
Поле "flag" INT может принимать 0,1,2
выбираем либо (0,1) либо (1,2)
Как лучше:
flag IN (0,1)
flag <> 2
flag < 2
flag = 0 OR flag = 1
будет ли влиять на произв. изменения типа поля на SET?
Неактивен
Все варианты одинаково плохи, IN и «=» чуть-чуть получше (в случае, когда
0 и 1, например, по 5% количества строк — сможет использовать индекс).
Неактивен