В каких случаях INNER JOIN (SELECT ... нельзя переписать с использованием временной таблицы) - PullRequest
0 голосов
/ 18 сентября 2009

Я использую GridSQL, где возникают проблемы с производительностью, когда возникает шаблон SQL INNER JOIN (SELECT. Поэтому я рассматриваю возможность переписать все эти запросы в два запроса, один из которых создает временную таблицу с использованием оператора точного выбора, а другой - присоединение запроса с временной таблицей, поэтому шаблон будет INNER JOIN temp_table (...) вместо этого.

В каких случаях это не сработает? Как вы можете подозревать, я надеюсь, что нет ответов на этот вопрос. ;)

Ответы [ 3 ]

1 голос
/ 18 сентября 2009

Я не думаю, что временная таблица ускорит ваши запросы! Вместо этого вы должны оптимизировать свои запросы. Что вы можете сделать:

  • Фильтрация записей перед внутренним соединением их с другими наборами записей
  • Определить правильные индексы

-Pavel

1 голос
/ 18 сентября 2009

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

Для "... INNER JOIN (SELECT ...") я сомневаюсь, что у вас возникнет эта проблема (или, если это вообще возможно, я не припомню, чтобы когда-либо пытался ее решить), поскольку вы должны ссылаться только на поля из первая таблица в критериях объединения.

0 голосов
/ 18 сентября 2009

В каких случаях ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ … Не переписывать с использованием временной таблицы

если запрос, который вы заменяете временной таблицей, может привести к огромному набору результатов, я бы не стал использовать временную таблицу. Служебная нагрузка, генерирующая его, сведет на нет любое возможное усиление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...