2015-12-15 2 views
-1

предполагающих У меня есть запрос DDL,беззнаковых целых на с идентичностью положительных значений

Create table tbl1 (
ID int identity(1,1) not null, 
field bigint, 
); 

Разве это не существенно тратить половину хранения? так как я знаю, что мой идентификатор всегда начинается с 1 и увеличивается на 1

Почему это похоже на обычную практику? вместо создания идентичности как беззнаковое :

https://msdn.microsoft.com/en-us/library/ms186775.aspx

+1

Я не совсем уверен, что именно то, что вы спрашиваете здесь. Целые числа без знака как таковые не поддерживаются во многих dbms, включая SQL Server, поэтому они не могут использоваться как типы идентификаторов. Было предложено добавить поддержку целых чисел без знака, но на основе ответов от поставщиков вряд ли получится приоритет. Технически говоря, половина «хранилища» не пропадает даром, вместо этого не используется половина целочисленных значений VALUES. –

+0

@ KenClement вы могли бы объяснить разницу между потраченной впустую и не используемой? afaik, этот бит никогда не изменится. так что бит будет потрачен впустую для каждой строки записи, которую вы вставляете. –

+1

В этом случае «хранилище» - 32 бита. Это не тот случай, когда 16 из них не используются или «пропадают». Только бит знака остается неизменным (0) во всех случаях. Это работает до 1/32 пространства «впустую». Половина состояний (битовые шаблоны), которые могут быть в номере, остаются непригодными. Но понятие «пространства состояний» (для монетного термина) отличается от «пространства памяти» - связанного, но другого. Вы сказали «место для хранения», когда вы говорили о «пространстве состояний». –

ответ

2

Там нет типа данных для целых чисел без знака в SQL Server.

Значения IDENTITY обычно начинаются с 1, но вы можете создать свой colunms, как

create table tab(id int identity(-2147483648, 1)) 
+0

мой плохой, недавно переключенный на sql-сервер, я думал, что ключевое слово identity было db агностиком. –

Смежные вопросы