Отправить заявку

MySQL: Что такое Impossible WHERE noticed after reading const tables

Часто приходится просматривать план (explain) запроса для того или иного теста. Недавно на одной из баз встретился ответ вида:Impossible WHERE noticed after reading const tables

Прежде всего необходимо понять, что mysql имеет ввиду под словосочетанием const tables.
Определение из документации mysql:

The table has at most one matching row, which is read at the start of the query. Because there is only one row, values from the column in this row can be regarded as constants by the rest of the optimizer. const tables are very fast because they are read only once.

Const table означает таблицу с максимальным числом кортежей (строк) равным единице которые удовлетворяют заданному условию. Оптимизатор посчитает выборку из этой таблицы константой и больше не будет ее трогать. В нашем случае оптимизатор увидел, что атрибут является частью ключа и таблица контролирует его уникальность (UNIQUE) и, просмотрев все строки обнаружил, что условие WHERE всегда дает false. Это сообщение не означает какой-либо ошибки в вашем запросе, это просто означает, что результатом рассматриваемого запроса (подзапроса в моем случа) будет нулевое число кортежей.

Другие публикации