Сравнение производительности хранилища временных таблиц - PullRequest
2 голосов
/ 16 августа 2011

Может ли кто-нибудь объяснить простым языком разницу в производительности между использованием временных таблиц и CTE по сравнению с табличными переменными в MSSQL. Я использовал временные таблицы довольно часто и начал использовать CTE только из-за ясного синтаксиса, но я обнаружил, что они медленнее. Я думаю, что временные таблицы используют системную память, и поэтому они кажутся быстрыми, но могут быть узким местом при попытке выполнить несколько заданий. Табличные переменные, которые я использовал экономно и не знаю много о. Нужны советы от гуру!

Ответы [ 3 ]

0 голосов
/ 16 августа 2011

На этот вопрос ответили здесь и здесь .Вкратце, это разные инструменты для разных задач.

  • Переменные таблиц могут привести к меньшему количеству перекомпиляций хранимых процедур, чем временные таблицы
  • Временная таблица хороша для повторного использования или выполнениямножественная обработка проходит для набора данных
0 голосов
/ 16 августа 2011

Этот вопрос хорошо освещен в Books Online, MSDN и на этом сайте.

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

CTE здесь хорошо описаны http://blogs.msdn.com/b/craigfr/archive/2007/10/18/ctes-common-table-expressions.aspx

0 голосов
/ 16 августа 2011

CTE не зависят от производительности.Они упрощают запрос для разработчика, абстрагируя операторы SQL - обычно это сложные СОЕДИНЕНИЯ или встроенные функции, применяемые к полям.Механизм базы данных просто вставляет CTE в запрос, который его использует.Таким образом, сам CTE не является «медленным», но вы можете обнаружить, что у вас лучшая производительность с временными таблицами, потому что ядро ​​базы данных создает лучшие планы запросов для запросов с использованием временных таблиц.

...