2013-04-22 2 views
1

Существует много потоков о временных таблицах и переменных таблицы.Вставка скорости Временная таблица против обычной таблицы

Однако, мой вопрос заключается в том, что делает временную таблицу намного быстрее обычной таблицы в Microsoft SQL Server?

Моя хранимая процедура выполняется в 5 раз быстрее, если я вставляю в таблицу temp, а затем просто перемещаю данные из нее в обычную таблицу.

Наиболее очевидным ответом будут клавиши/индексы, но нормальная таблица без каких-либо клавиш вообще.

Что еще могло заставить его работать быстрее?

Благодаря

+1

Выполняете ли вы INSERT на основе набора в таблицу temp или Row by Row? Тот же вопрос, когда вы переходите непосредственно к «реальной» таблице. – granadaCoder

+0

Да, просмотр кода хранимой процедуры может привести к переменным, которые вы в настоящее время не описали. –

+0

hello, Это строки по строкам. – mrQQ

ответ

4

Несколько возможностей:

  1. TempDB может быть быстрее I/O
  2. Запрос может быть параллельно и воспользовавшись несколькими файлами Tempdb данных, если вы настроили его сделать это
  3. У TempDB может быть место для вставок, в то время как пользовательская база данных должна ждать автострада
  4. База данных пользователей может иметь ограничения на регистрацию, а также для simi lar причинам
  5. База данных пользователя, возможно, придется «проснуться» - например. если у него установлено значение AutoClose в положение ON
+0

Привет, 1. Тот же диск. 2. Один файл. 3. У обоих есть комната. 4. Простое восстановление на обоих. 5. Оба находятся в AutoClose = OFF – mrQQ