2010-11-07 21 views
26

Sé que algunas tiendas de software se han quemado utilizando el tipo int para la clave principal de una clase persistente. Dicho esto, no todas las mesas crecen más de 2 billones. Como cuestión de hecho, la mayoría no lo hace.Tipo de clave principal: int vs long

Entonces, ¿Ustedes usan el tipo largo solo para aquellas clases que están mapeadas en tablas potencialmente grandes O para cada clase persistente solo para ser consistente? ¿Cuál es el consenso de la industria?

Dejaré esta pregunta abierta por un tiempo para que pueda compartir con nosotros sus historias de éxito/terror.

Respuesta

19

Largo puede ser ventajoso incluso si la tabla no crece muy grande, pero tiene una alta rotación, es decir, si las filas se eliminan/insertan con frecuencia. El identificador único autogenerado/secuencial puede incrementarse a un número alto mientras la tabla permanece pequeña.

Por lo general uso Long porque los beneficios de rendimiento no se notan en la mayoría de mis proyectos, sin embargo, un error debido al desbordamiento sería muy notable.

Eso no quiere decir que Int no sea una mejor opción para los escenarios de otras personas, por ejemplo, para el crujido de datos o los sistemas complejos de consulta. Simplemente, evite los riesgos/beneficios y cómo afectan su proyecto específico.

1

Uso entero para mis claves sustitutivas a menos que tenga la necesidad de que sean otra cosa. No es necesario usar siempre un Long si no lo necesitas.

(I suelen utilizar JPA/Hibernate en mis proyectos correr contra cualquiera de las bases de datos Oracle 10g o 5.x de MySQL.)

1

Debido Int siempre será más rápido para seleccionar/Ordenaciones.

+9

¿Incluso en x64? Pensé lo contrario. –

2

No sé de "quemado". No es difícil cambiar de int a largo cuando lo necesita. La conversión es directa en SQL, y luego es solo una búsqueda y reemplazo en su código de cliente (o hacer el cambio en su capa de persistencia, y luego compilar y ver qué se rompe.) Se está moviendo de un tipo entero a otro, para que no tenga que preocuparse por sutiles problemas de conversión o truncado ...

Pasar de flotar a doble sería mucho más difícil.

+7

El día que alguien usa float o double para una clave principal es el día en que dejé de ser un ingeniero de software. Pero ahora lo que quieres decir. Para los campos de coma flotante, la decisión por adelantado es mucho más importante que cuando se trabaja con campos enteros. –