Подтвердить что ты не робот

Лучший тип для столбца ID в SQL Server 2008

Я новичок SQL Server 2008. там столбец в таблице, например StudentID. StudentID будет pk таблицы, он может быть целым и будет огромным числом.

Мой вопрос: какой тип столбца StudentID в SQL Server 2008 лучше всего?

bigint? numeric(18,0)? или других?

Большое спасибо.

4b9b3361

Ответ 1

Вы определяете столбец типа INT (или SMALLINT, TINYINT, BIGINT) с атрибутом IDENTITY:

CREATE TABLE dbo.YourTable( ID INT IDENTITY(1,1) ......

При этой настройке SQL Server автоматически генерирует последовательный идентификатор для вашей таблицы, когда строки вставляются в вашу таблицу.

С типом INT, начиная с 1, вы получите более 2 миллиардов возможных строк - это должно быть более чем достаточно для подавляющего большинства случаев. С BIGINT вы получаете примерно 922 квадриллиона (922 с 15 нулями - 922 000 000) - достаточно для вас??

Если вы используете INT IDENTITY, начиная с 1, и вы вставляете строку каждую секунду, вам нужно 66,5 лет, прежде чем вы нажмете ограничение на 2 миллиарда... (так, на мой взгляд, это более чем достаточно для подавляющего большинства случаев!)

Если вы используете BIGINT IDENTITY начиная с 1, и вы вставляете одну тысячу строк каждую секунду, вам нужно ошеломляющее 292 миллиона лет, прежде чем вы достигнете предела в 922 квадриллиона....

INT использует 4 байта памяти, а BIGINT использует 8 байтов. Особенно, если вы имеете дело с большим количеством строк и несколькими некластеризованными индексами, вы хотите, чтобы это было как можно меньше, - еще одна причина, по которой я обычно выбираю INT как мой тип "ID" (если только у меня нет очень сильное указание на то, что INT будет недостаточно...)

Подробнее об этом (со всеми опциями есть) в Интернет-книгах MSDN.

Ответ 2

Int - это лучший тип столбца Id в таблице в SQL Server

Если таблица в итоге имеет слишком много записей, мы можем изменить на BigInt

Мы также можем создать Id как идентификатор и/или PK таблицы.

CREATE TABLE [dbo].[TableName](
    [TableNameId] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]

Пример идентификатора и основного ключа

CREATE TABLE [dbo].[TableName3](
    [TableName3Id] [int] IDENTITY(1,1) NOT NULL,
 CONSTRAINT [PK_TableName3] PRIMARY KEY CLUSTERED 
 (
    [TableName3Id] ASC
 )
)

Надеюсь, это поможет вашему вопросу.