Подтвердить что ты не робот

Имеет ли значение mysql 5.0 значение null?

Я понимаю, что заданный вопрос задавался перед переполнением стека только с неопределенным окончательным ответом: ссылка

Итак, вот оно снова.

Таблица A: Имеет целочисленный столбец с нулевым значением вместе с индексом. Запрос:

SELECT * 
FROM table 
WHERE column IS NULL 
LIMIT 10;

Будет ли использоваться индекс или mysql выполнит полное сканирование таблицы, пока не найдет 10 записей?

4b9b3361

Ответ 1

Я думаю, что это должно быть полезно:

http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

Поиск с использованием col_name IS NULL использует индексы, если col_name равно индексируются.

Ответ 2

Единственный способ узнать, что именно в конкретном случае должен быть запущен "EXPLAIN SELECT" в вашем запросе.

Это действительно зависит от количества NULL в вашей таблице по сравнению с общим количеством строк; обновлена ​​ли таблица статистики и т.д....

Ответ 3

Вам нужно будет проанализировать запрос. В общем, это зависит от относительного процента значений NULLs. Если большая часть записей в этом целочисленном столбце равна NULL, это, скорее всего, пропустит его.

С другой стороны, если только 10% (например) NULL, он будет (или должен) использовать индекс.

Ответ 4

Существует один простой способ узнать это.

Вы можете выполнить эту команду show index from tablename, и она вернет некоторые результаты анализа, один из которых называется NULL.

если NULL равно YES, ваш индекс содержит NULL

http://dev.mysql.com/doc/refman/5.1/en/show-index.html