Скорость вставки временной таблицы в сравнении с обычной таблицей

есть много тем о временных таблицах и табличных переменных.

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

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

Наиболее очевидным ответом были бы ключи/индексы, но обычная таблица вообще без ключей.

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

Спасибо


person mrQQ    schedule 22.04.2013    source источник
comment
Вы выполняете INSERT на основе набора во временную таблицу или построчно? Тот же вопрос, когда вы переходите непосредственно к реальному столу.   -  person granadaCoder    schedule 22.04.2013
comment
Да, просмотр кода хранимой процедуры может привести к появлению переменных, которые вы еще не описали.   -  person Aaron Bertrand    schedule 22.04.2013
comment
привет, это построчные вставки.   -  person mrQQ    schedule 22.04.2013


Ответы (1)


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

  1. TempDB может быть на более быстром вводе-выводе
  2. Запрос может быть параллельным и использовать несколько файлов данных tempdb, если вы настроили его для этого.
  3. TempDB может иметь место для вставок, в то время как пользовательская база данных должна ждать автоматического увеличения.
  4. Пользовательская база данных также может иметь ограничения на ведение журнала по тем же причинам.
  5. Пользовательская база данных может «проснуться» - например. если для него включено автоматическое закрытие
person Aaron Bertrand    schedule 22.04.2013
comment
Привет, 1. Тот же диск. 2. Один файл. 3. У обоих есть место. 4. Простое восстановление на обоих. 5. Оба находятся в режиме автозакрытия = ВЫКЛ. - person mrQQ; 22.04.2013