2016-06-12 3 views
0

Во всех таблицах SQL я использую инкрементный индекс с именем id. Я не уверен, что я прав, так как я слышал, что некоторые SQL-серверы увеличивают его записи по умолчанию. Я прав? Как получить эти значения по умолчанию для значений по умолчанию, а затем на разных SQL-серверах?Инкрементный индекс таблицы

Другой вопрос, если я использую свой собственный идентификатор - какой тип данных я должен использовать для этого поля? В настоящее время я использую тип int.

+2

могли бы вы пометить соответствующую RDBMS – TheGameiswar

+0

1-ый вопрос, хорошо документированы в redpective руководствах. Ответ на второй - это зависит от ваших бизнес-требований. – Shadow

+1

Если вы действительно используете MySQL, SQL Server, PostgeSQL и SQLite, это должно быть объяснено в вашем вопросе. –

ответ

0

Для SQL Server вы абсолютно правы. Очень хорошая практика иметь инкрементный столбец идентификатора идентификатора для кластерного индекса.
Однако, это может зависеть от вашего бизнес-процесса. В случае массивных нагрузок в таблицу вы можете иметь кластерный индекс. В этом случае вам, возможно, придется использовать GUID или специальные сценарии, но это довольно редкий случай.

2-й вопрос: вы должны использовать целые числа для вашего идентификатора, а размер зависит от количества записей в таблице. Например, если у вас есть таблица «Пол», вы можете использовать «TINYINT» (1 байт). Он содержит значения от 0 до 255.
Если у вас есть таблица «Период работы» (для ежедневной записи), вы в порядке с «SMALLINT» (2 байта). Он содержит значения от -32,768 до 32,767.
В большинстве других случаев используется типа «INT»
В случае, если ваш босс говорит, что это не будет достаточно, то вы можете использовать «BIGINT», но в этом случае вы, вероятно, будете бороться раздором.

Вот как объявить эти значения:

ID TINYINT IDENTITY(0,1) 
ID SMALLINT IDENTITY(-32768,1) 
ID INT IDENTITY(-2147483648,1) 
ID BIGINT IDENTITY(-9223372036854775808,1)