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

Тип первичного ключа: int vs long

Я знаю, что некоторые магазины программного обеспечения были сжечь, используя тип int для первичного ключа постоянного класса. При этом не все таблицы растут за 2 миллиарда. На самом деле большинство не делают.

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

Я оставлю этот вопрос открытым какое-то время, чтобы вы могли поделиться с нами своими историями успеха/ужаса.

4b9b3361

Ответ 1

Длинные могут быть выгодными, даже если таблица не растет очень большой, но имеет высокий оборот, т.е. если строки удалены/вставлены часто. Ваш автоматически сгенерированный/последовательный уникальный идентификатор может увеличиваться до большого числа, в то время как таблица остается небольшой.

Обычно я использую Long, потому что преимущества производительности не заметны в большинстве моих проектов, однако ошибка из-за переполнения будет очень заметной!

Это не означает, что Int не лучший вариант для сценариев других людей, например, для хрустальных данных или сложных систем запросов. Просто избегайте рисков/преимуществ и того, как они влияют на ваш конкретный проект.

Ответ 2

Я не знаю о "сожжении". Это не сложно изменить с int на долго, когда вам нужно. Преобразование прямо в SQL, а затем просто поиск и замена в вашем клиентском коде (или изменение в вашем уровне персистентности, а затем компиляция и просмотр разрывов.) Вы переходите от одного целочисленного типа к другому, поэтому вам не нужно беспокоиться о тонких проблемах с преобразованием или усечении.

Переход от float к double будет намного сложнее.

Ответ 3

Я использую Integer для своих суррогатных ключей, если у меня нет необходимости, чтобы они были чем-то другим. Нет необходимости всегда использовать Long, если вам это не нужно.

(Обычно я использую JPA/Hibernate в своих проектах, работающих с базами данных Oracle 10g или MySQL 5.x).

Ответ 4

Потому что Int всегда будет быстрее для Select/Sorts.