Синтаксис MySQL в предложении - PullRequest
2 голосов
/ 26 апреля 2011

я использую mysql и интересовался его синтаксисом.

Я хочу сделать предложение IN примерно таким:

from_id OR to_id IN (
)

за исключением того, что я не знаю, каков синтаксис

я хочу избежать запуска условия in дважды, как это:

from_id IN (
)

OR

to_id IN (
)

С наилучшими пожеланиями александр

Ответы [ 2 ]

3 голосов
/ 26 апреля 2011

Вы не можете этого сделать.Допустима только вторая форма.

Как упоминает @judda, не беспокойтесь о преждевременной оптимизации.Оптимизатор запросов будет использовать преимущества кэширования, где это возможно.

0 голосов
/ 26 апреля 2011

Если у вас есть какие-то причины беспокоиться о том, что предложение IN запускается дважды (например, если подзапрос является особенно сложным, а оптимизатор, похоже, не воспользовался преимуществом кэширования набора результатов), вы всегда можете заменить Предложение IN с INNER JOIN.

Итак, это:

FROM x
WHERE from_id IN (
  <i>subquery</i>
)
OR
to_id IN (
  <i>subquery</i>
)

становится таким:

FROM x
  INNER JOIN (
    <i>subquery</i>
  ) y ON y.value IN (x.from_id, x.to_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...