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

Должен ли я использовать int32 или int64 для первичных ключей в моей базе данных SQL Server?

При создании новой базы данных на SQL Server следует использовать первичные ключи как int32 или int64?

Является ли int32 быстрее?

Я думаю, что причина, по которой я не хочу идти с int32, заключается в следующем: не будет ли верхний предел для типа данных int32 суммировать транзакции на определенной таблице до 2 147 483 647? Я не собираюсь хранить там много данных, но что, если мне постоянно нужно создавать новые записи, а затем удалять другие, которые были устаревшими? многие транзакции позже, не хватит ли мне ключей? Есть ли какой-то метод, который позаботится об этом уже? Или я должен просто использовать длинный тип данных.

4b9b3361

Ответ 1

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

Всего несколько быстрых вычислений:

  • Если вы используете INT IDENTITY начиная с 1, а вы вставляете строку каждую секунду, вам нужно 66,5 лет, прежде чем вы нажмете ограничение на 2 миллиарда....

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

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