В sql2000 через sql 2008r2 нормально ли использовать bigint для первичного ключа и внешних ключей для всех таблиц в базе данных? - PullRequest
1 голос
/ 15 сентября 2011

Я хочу стандартизировать свою базу данных с непротиворечивым первичным ключом из-за перехода с sql 2000 на sql 2008r2.Является ли использование bigint хорошим способом для использования с первичными ключами и внешними ключами и может ли оно автоматически увеличиваться на 1 при добавлении новой строки?Должен ли я использовать int вместо bigint?Кроме того, есть ли какие-либо проблемы с целыми числами или большими буквами при переходе с sql2000 на sql2008r2?

Ответы [ 2 ]

3 голосов
/ 15 сентября 2011

BIGINT, вероятно, самый безопасный, но для данной сущности вы должны использовать наибольшее необходимое число, а не стандартизировать наибольшее возможное число для всех сущностей.

Для столбца IDENTITY в таблице Employees, например, BIGINT может быть просто излишним. У вас будет более 2 миллиардов сотрудников, или вы напишите код, который пытается создать сотрудника 2 миллиарда раз, но каждый раз не работает и откатывается? Возможно, SMALLINT - это хорошо (32 000+), если вы не имеете дело с очень большой компанией.

Для других таблиц, где вы просто не знаете, сколько строк вы получите, опять же, BIGINT, вероятно, самый безопасный. Я хотел бы надеяться, что у вас будет какая-то идея, основанная на сущности и бизнесе, чтобы можно было объединить таблицу либо в корзину «может получить> 2 миллиарда строк», либо в корзину «точно не получит> 2 миллиарда строк» , Что касается последнего, вы можете разбить его дальше, если хотите. Я видел много систем с небольшими поисковыми таблицами, в которых IDENTITY был определен как SMALLINT или даже TINYINT - для тех размеров, которые я бы предпочел просто стандартизировать на INT. Личные предпочтения, например, использование CHAR для строк, которые могут различаться по размеру, но всегда будут <5 символов. </p>

A BIGINT - 8 байтов, INT - 4 байта. Это только вдвое больше, но это может стать большим фактором производительности для больших таблиц, в зависимости от структуры индекса, количества строк на странице, частоты удаления и множества других факторов. К сожалению, самые большие таблицы, где это действительно вступает в игру, также являются теми, которые, вероятно, требуют вероятности того, что они получат> 2 миллиарда значений.

BIGINT доступно в SQL Server 2000.

1 голос
/ 15 сентября 2011

Это полностью зависит от ваших потребностей ... вы видите, что столбцы идентификаторов превышают INT? Если это так, используйте BIGINT. В противном случае это не имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...