Ответ 1
Я думаю, что это должно быть полезно:
http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
Поиск с использованием col_name IS NULL использует индексы, если col_name равно индексируются.
Я понимаю, что заданный вопрос задавался перед переполнением стека только с неопределенным окончательным ответом: ссылка
Итак, вот оно снова.
Таблица A: Имеет целочисленный столбец с нулевым значением вместе с индексом. Запрос:
SELECT *
FROM table
WHERE column IS NULL
LIMIT 10;
Будет ли использоваться индекс или mysql выполнит полное сканирование таблицы, пока не найдет 10 записей?
Я думаю, что это должно быть полезно:
http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
Поиск с использованием col_name IS NULL использует индексы, если col_name равно индексируются.
Единственный способ узнать, что именно в конкретном случае должен быть запущен "EXPLAIN SELECT" в вашем запросе.
Это действительно зависит от количества NULL в вашей таблице по сравнению с общим количеством строк; обновлена ли таблица статистики и т.д....
Вам нужно будет проанализировать запрос. В общем, это зависит от относительного процента значений NULLs
. Если большая часть записей в этом целочисленном столбце равна NULL, это, скорее всего, пропустит его.
С другой стороны, если только 10% (например) NULL
, он будет (или должен) использовать индекс.
Существует один простой способ узнать это.
Вы можете выполнить эту команду show index from tablename
, и она вернет некоторые результаты анализа, один из которых называется NULL.
если NULL равно YES, ваш индекс содержит NULL