Ответ 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.