Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Поясните про размер таблиц  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Есть две таблицы, в обе вставлено 5 000 000 рандомных гуидов.
CREATE TABLE dbo.VARCHAR_GUIDS  ( ID varchar(36) primary key )  
CREATE TABLE dbo.VARCHAR_GUIDS_2 ( ID varchar(36) primary key, TrueGuid   AS  (cast(ID as uniqueidentifier)) )  


На диске они занимают одинаково мест вплоть до килобайта

                                  Кб            Мб       
VARCHAR_GUIDS	dbo	5000000   245544	239.79 
VARCHAR_GUIDS_2	dbo	5000000  245544	  239.79 


Почему так выходит?
16 янв 18, 12:25    [21110130]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
Konst_One
Member

Откуда:
Сообщений: 11522
так TrueGuid вычисляемое
16 янв 18, 12:27    [21110141]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
Konst_One
Member

Откуда:
Сообщений: 11522
вот если б PERSISTED было, то тогда отличия бы были
16 янв 18, 12:28    [21110144]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Cammomile,

A computed column is a virtual column that is not physically stored in the table, unless the column is marked PERSISTED.
16 янв 18, 12:32    [21110162]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ох, позорище мне.
Правда я ни разу не пользовался вычисляемыми столбцами, вообще!
А как работает индекс на вычисляемом поле? Автоматически превращает его в "персистед"?
16 янв 18, 12:37    [21110181]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Судя по всему, так и есть. С некластерным индексом места стало в два раза больше. Ну вот и разобрались.
16 янв 18, 12:38    [21110184]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Cammomile,

автор
Автоматически превращает его в "персистед"?
нет, сам индекс место занимает
16 янв 18, 12:44    [21110210]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Но индекс же должен иметь какие-то там значения физически, значит эта колонка становится "овеществленной". Хоть и внутри индекса.
16 янв 18, 12:46    [21110222]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Cammomile
Но индекс же должен иметь какие-то там значения физически, значит эта колонка становится "овеществленной". Хоть и внутри индекса.


В таком контексте да. Если у вас вычисляемое поле 4 последнии цифры паспорта и оно не persisted, то в некласт индексе будут эти 4 цифры.
16 янв 18, 12:50    [21110253]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
aleksrov
Cammomile
Но индекс же должен иметь какие-то там значения физически, значит эта колонка становится "овеществленной". Хоть и внутри индекса.


В таком контексте да. Если у вас вычисляемое поле 4 последнии цифры паспорта и оно не persisted, то в некласт индексе будут эти 4 цифры.

а если оно persisted, то будут буквы?
16 янв 18, 13:00    [21110295]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
aleksrov
Member

Откуда:
Сообщений: 948
TaPaK,

Согласен, формулировка корявая, и если persisted тоже.
16 янв 18, 13:03    [21110318]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
04cf9f9576a6f15
Member [заблокирован]

Откуда:
Сообщений: 2927
Cammomile
Ох, позорище мне.
Правда я ни разу не пользовался вычисляемыми столбцами, вообще!
А как работает индекс на вычисляемом поле? Автоматически превращает его в "персистед"?
Насколько я помню, нельзя построить индекс по вычисляемому полю, если явно не объявить его PERSISTED.

#Хэш=
16 янв 18, 14:22    [21110745]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
04cf9f9576a6f15
Cammomile
Ох, позорище мне.
Правда я ни разу не пользовался вычисляемыми столбцами, вообще!
А как работает индекс на вычисляемом поле? Автоматически превращает его в "персистед"?
Насколько я помню, нельзя построить индекс по вычисляемому полю, если явно не объявить его PERSISTED.

#Хэш=

вы неправильно помните
16 янв 18, 14:25    [21110764]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 27753
04cf9f9576a6f15
Cammomile
Ох, позорище мне.
Правда я ни разу не пользовался вычисляемыми столбцами, вообще!
А как работает индекс на вычисляемом поле? Автоматически превращает его в "персистед"?
Насколько я помню, нельзя построить индекс по вычисляемому полю, если явно не объявить его PERSISTED.

#Хэш=
Нет такого требования: тынц.
16 янв 18, 14:34    [21110822]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Cammomile,

автор
Но индекс же должен иметь какие-то там значения физически, значит эта колонка становится "овеществленной". Хоть и внутри индекса.

в общем ответ уже есть, в индексе вы матереализуете значения, при этом индекс будет изменяться когда будут затронуты колонки участвующие в расчёте
16 янв 18, 14:39    [21110846]     Ответить | Цитировать Сообщить модератору
 Re: Поясните про размер таблиц  [new]
04cf9f9576a6f15
Member [заблокирован]

Откуда:
Сообщений: 2927
skyANA
04cf9f9576a6f15
пропущено...
Насколько я помню, нельзя построить индекс по вычисляемому полю, если явно не объявить его PERSISTED.

#Хэш=
Нет такого требования: тынц.
Благодарю. Я тогда мутил работу с регулярными выражениями на CLR, вот в памяти и отложилось, что это обязательно. Для более простых случаев действительно можно без этого.
16 янв 18, 18:26    [21111776]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить