Какой тип данных sql мы должны использовать для первичного ключа номерных знаков:
- ИНТ
- BIGINT
- Числовое
- поплавок
Какой тип данных sql мы должны использовать для первичного ключа номерных знаков:
Как правило, int
.
bigint
, если вы думаете, что у вас будет больше строк, чем во Вселенной есть атомы.
uniqueidentifier
полезен, если вам нужны глобально уникальные ключи (ключи, которые гарантированно будут уникальными для всех таблиц в вашей схеме, возможно, даже универсально уникальными (я не помню))
Остальные два я бы не использовал, они не являются целыми типами (у них есть фракции, которые просто не имеют большого смысла в качестве ключей)
Вам действительно нужно разделить две отдельные проблемы:
1) первичный ключ - это логическая конструкция - один из ключевых кандидатов, который однозначно и надежно идентифицирует строку в вашей таблице. Это может быть что угодно, на самом деле - INT, GUID, строка - выберите, что имеет наибольшее значение для вашего сценария.
2) ключ кластеризации (столбец или столбцы, которые определяют "кластеризованный индекс" в таблице) - это связанная с физическим хранением вещь, и здесь маленький, стабильный, постоянно растущий тип данных является вашим лучшим выберите - INT или BIGINT в качестве параметра по умолчанию.
По умолчанию первичный ключ в таблице SQL Server также используется в качестве ключа кластеризации, но это не обязательно так! Мне лично кажется, что с течением времени происходит значительное повышение производительности при распаде предыдущего основного кластерного ключа на основе GUID на два отдельных ключа - первичный (логический) ключ в GUID и ключ кластеризации (упорядочения) на отдельной INT IDENTITY (1, 1) столбец.
Фрагментация индекса снизилась до минимальных уровней, и, следовательно, производительность поиска индекса была очень рекомендована!
Марк
Одна из огромных причин не использовать GUID для ПК - это их ужасное соотношение заполнения для страниц индекса - такое злоупотребление может значительно увеличить затраты на производительность ввода-вывода. GUID должны быть оставлены как AK и вместо этого загружать запросы с помощью встроенного PK, где это возможно.
для 32-разрядных процессоров, int, вероятно, будет наиболее эффективным размером для обработки.
unsigned int
того размера, который соответствует вашим конкретным потребностям.
GUID/UUID - лучшие типы полей для уникального первичного ключа таблицы.