Тип данных Sql для основного ключа - SQL Server?
Какой тип данных sql мы должны использовать для первичного ключа номерных знаков:
- ИНТ
- BIGINT
- Числовое
- поплавок
Ответы
Ответ 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 - лучшие типы полей для уникального первичного ключа таблицы.