Сравнение временных данных T-SQL # с СО - PullRequest
5 голосов
/ 15 февраля 2012

Я работаю с базовым SQL уже пару лет.Однако только недавно я столкнулся с командой «WITH».Из моего исследования, похоже, «WITH» - это метод для создания временной таблицы.Но по моему опыту, вы также можете использовать хеш "#" для создания временной таблицы.

Я пытался искать "WITH" и "#", но так как это странные поисковые слова, я не получаюбольшой результат.

Может ли кто-нибудь подсказать мне, в чем разница, например, плюсы и минусы для каждого?

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

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

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

В отличие от временной таблицы, CTE фактически не имеет физического хранилища. Это больше похоже на «представление».

Вот отличная статья о том, что такое CTE . И в отличие от временных таблиц, которые сохраняются для соединения, CTE:

определено в области выполнения одного оператора SELECT, INSERT, UPDATE, DELETE или CREATE VIEW

Справочник MSDN по использованию общих табличных выражений

0 голосов
/ 15 февраля 2012

WITH - это таблица, создаваемая «на лету» (в памяти), поэтому она потенциально намного быстрее, чем временная (#) таблица, которая похожа на любую другую таблицу, но она автоматически удаляется при закрытии соединения. Мошенничество в том, что он жив только для одного утверждения

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