Таблицы SQL Server: в чем разница между @, # и ##?



в SQL Server, в чем разница между @ table, # table и ## table?

517   6  

6 ответов:

#table относится к локальной (видимой только пользователю, который ее создал) временной таблице.

##table относится к глобальной (видимой для всех пользователей) временной таблице.

@variableName относится к переменной, которая может содержать значения в зависимости от его типа.

ура

# и ## таблицы-это фактические таблицы, представленные во временной базе данных. Эти таблицы могут иметь индексы и статистику, и могут быть доступны через sprocs в сеансе (в случае глобальной временной таблицы, она доступна через сеансы).

@table-это переменная таблицы.

подробнее:http://www.sqlteam.com/article/temporary-tables

Я бы сосредоточился на различиях между #table и @table. ##table-это глобальная временная таблица, и для записи за более чем 10 лет использования SQL Server мне еще не приходилось сталкиваться с допустимым вариантом использования. Я уверен, что некоторые существуют, но природа объекта делает его очень непригодным для использования ИМХО.

ответ на @whiner от @marc_s абсолютно верен: это распространенный миф, что табличные переменные всегда живут в памяти. Это на самом деле довольно часто для табличной переменной, чтобы перейти на диск и работать так же, как временная таблица.

в любом случае я предлагаю прочитать о множестве различий, следуя ссылкам, указанным @Astander. Большая часть разницы связана с ограничениями на то, что вы не можете сделать с переменными @table.

CREATE TABLE #t

создает таблицу, которая видна только на этом соединении и во время него тот же пользователь, который создает другое соединение, не сможет увидеть таблицу #t из другого соединения.

CREATE TABLE ##t

создает временную таблицу, видимую для других соединений. Но таблица удаляется при завершении создания соединения.

Если вам нужна уникальная глобальная временная таблица, создайте свою собственную с префиксом/суффиксом Uniqueidentifier и отбросьте выполнение post, если объект if object_id(.... Единственным недостатком является использование динамического sql и нужно явно отказаться.

Comments

    Ничего не найдено.