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

Тип данных Sql для основного ключа - SQL Server?

Какой тип данных sql мы должны использовать для первичного ключа номерных знаков:

  • ИНТ
  • BIGINT
  • Числовое
  • поплавок
4b9b3361

Ответ 1

Как правило, int.

bigint, если вы думаете, что у вас будет больше строк, чем во Вселенной есть атомы.

uniqueidentifier полезен, если вам нужны глобально уникальные ключи (ключи, которые гарантированно будут уникальными для всех таблиц в вашей схеме, возможно, даже универсально уникальными (я не помню))

Остальные два я бы не использовал, они не являются целыми типами (у них есть фракции, которые просто не имеют большого смысла в качестве ключей)

Ответ 2

Вам действительно нужно разделить две отдельные проблемы:

1) первичный ключ - это логическая конструкция - один из ключевых кандидатов, который однозначно и надежно идентифицирует строку в вашей таблице. Это может быть что угодно, на самом деле - INT, GUID, строка - выберите, что имеет наибольшее значение для вашего сценария.

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

По умолчанию первичный ключ в таблице SQL Server также используется в качестве ключа кластеризации, но это не обязательно так! Мне лично кажется, что с течением времени происходит значительное повышение производительности при распаде предыдущего основного кластерного ключа на основе GUID на два отдельных ключа - первичный (логический) ключ в GUID и ключ кластеризации (упорядочения) на отдельной INT IDENTITY (1, 1) столбец.

Фрагментация индекса снизилась до минимальных уровней, и, следовательно, производительность поиска индекса была очень рекомендована!

Марк

Ответ 3

Одна из огромных причин не использовать GUID для ПК - это их ужасное соотношение заполнения для страниц индекса - такое злоупотребление может значительно увеличить затраты на производительность ввода-вывода. GUID должны быть оставлены как AK и вместо этого загружать запросы с помощью встроенного PK, где это возможно.

Ответ 4

для 32-разрядных процессоров, int, вероятно, будет наиболее эффективным размером для обработки.

Ответ 5

unsigned int того размера, который соответствует вашим конкретным потребностям.

Ответ 6

GUID/UUID - лучшие типы полей для уникального первичного ключа таблицы.