Ускорение присоединения временных таблиц в SQL Server - PullRequest
3 голосов
/ 25 августа 2009

У меня есть 2 временные таблицы # temp1 и #temp. Оба имеют столбцы ключа и даты. Оба имеют около 25 тыс. Строк. И мне осталось присоединиться к ним на основе ключа и даты, которые уникальны для всех строк Это соединение занимает около 4 минут. Есть ли способ ускорить его или какие-то альтернативные методы?

Ответы [ 4 ]

6 голосов
/ 25 августа 2009

Я считаю, что вы можете создавать индексы для временных таблиц, как и для любых других таблиц.

3 голосов
/ 25 августа 2009

Если ваше объединение 25k таблиц занимает 4 минуты, значит что-то не так.

Скорее всего, вы поставили неправильное JOIN условие, которое приводит к декартовому соединению (или к чему-то близкому к нему), что приводит к 25k * 25k = 625M возвращаемым записям.

Это может занять 4 минут, если не больше, но я не думаю, что это было то, что вы хотели.

Возможно, в вашем запросе есть предложения DISTINCT / GROUP BY, что заставляет запрос возвращать правильный набор результатов, но неоптимальным образом.

Не могли бы вы опубликовать свой запрос, чтобы я мог сообщить точную причину?

1 голос
/ 25 августа 2009

в зависимости от того, что вы делаете, вы, вероятно, могли бы вообще избежать временных таблиц и иметь решение на основе множеств (которое будет работать намного быстрее и лучше масштабироваться), но трудно понять, не имея представления о том, что ваш запрос .

1 голос
/ 25 августа 2009

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

Не могли бы вы оставить некоторые детали?

...