переменные таблицы созданы и хранятся в памяти или в базе данных tempdb?

Табличные переменные создаются в памяти или в базе данных tempdb? То же самое для короткие временные таблицы?

11
задан Martin Smith 20 October 2013 в 19:03
поделиться

2 ответа

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

example

create table #test (Item char(1),  TimeSold varchar(20))

select * from tempdb.sys.sysobjects
where name like '#test%'

, вы должны увидеть что-то с именем вроде #test _______ 000000000905, но с большим количеством подчеркиваний

Если вам нужно проверить, существует ли временная таблица, см. Также Как проверить, существует ли временная таблица в SQL Server

Структура переменной таблицы также создается в tempdb. Чтобы увидеть переменную таблицы, вы могли бы что-нибудь сделать вот так, но нет гарантии, что кто-то не пробрался перед вами при создании своей табличной переменной. Имя переменной таблицы будет иметь вид # 7BB1235D

    declare @v table(id int) 
select top 1 * from tempdb.sys.sysobjects
where name like '#%'
and name not like '%[_]%'
order by crdate desc
select * from @v

Для получения дополнительной информации см. Здесь: http://support.microsoft.com/kb/305977

13
ответ дан 3 December 2019 в 07:10
поделиться

Насколько я понимаю, как минимум структура табличной переменной всегда создается в TempDB. Затем, как указал SQLMenace , данные могут или не могут перетекать.

Согласно этой статье базы знаний Майкрософт :

Табличная переменная - это не только память. структура. Поскольку табличная переменная может содержать больше данных, чем может поместиться память, она должна иметь место на диске для хранения данных. Табличные переменные созданный в базе данных tempdb аналогичный во временные таблицы. Если память доступны как переменные таблицы, так и временные таблицы создаются и обрабатывается, пока находится в памяти (данные кеш).

3
ответ дан 3 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: