MySQL определяет Constants & Constant Tables
здесь следующим образом:
Таблица с нулевыми строками или только с одной строкой
Выражение таблицы, которое ограничено условием WHERE, содержащее выражения вида column = constant, для всех столбцов первичного ключа таблицы или для всех столбцов любого из уникальных ключей таблицы (предоставляется что уникальные столбцы также определены как NOT NULL).
Пример 1
FROM Table0 ... WHERE column1=5 AND column2=7 ...
когда Table0
определение содержит
... PRIMARY KEY (column1,column2)
Пример 2
FROM Table1 ... WHERE unique_not_null_column=5
когда Table1
определение содержит
... unique_not_null_column INT NOT NULL UNIQUE
MySQL сообщает, что заранее оценит таблицу констант и «вставит» это значение в запрос (если оно есть, но если его нет, то оно разрешается как IMPOSSIBLE WHERE
).
Мой вопрос:
Что, если есть другие условия наряду с "обязательными" условиями, которые должны быть constant
, объединенными с and
или or
? MySQL тоже считает следующие запросы постоянными?
Из моей интуиции, учитывая их, Constant
будет больно, когда предикаты or
-едны, и не будет больно, если они and
-едны. Но нигде нет официальных писем об этом, насколько я мог найти.
FROM Table0 ... WHERE column1=5 AND column2=7 AND column_not_special='lorem'
FROM Table1 ... WHERE unique_not_null_column=5 OR some_random=3