Является ли запрос MySQL «постоянным», если он удовлетворяет правилу, но также имеет другие критерии? - PullRequest
0 голосов
/ 10 июля 2019

MySQL определяет Constants & Constant Tables здесь следующим образом:

  1. Таблица с нулевыми строками или только с одной строкой

  2. Выражение таблицы, которое ограничено условием 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
...