Tipo de columna de clave principal de MySQL para tablas grandes
-
03-07-2019 - |
Pregunta
Estoy trabajando en el proyecto con una tabla de bases de datos relativamente grande ( 700K filas ).
Error, he cometido al diseñar el esquema DB. Cuando las filas aumentaban, tuve que aumentar el tipo de columna de ID bigint ( x ).
Ahora es bigint (44). Tengo miedo de establecer un alto valor de x porque pensé que puede ralentizar significativamente el rendimiento. Quizás estoy equivocado ...
Por favor, ayúdame a resolver el problema.
¿Qué tipo de columna puedo configurar una vez y olvidarme de este problema?
¿Qué debería aprender mejor en el campo del diseño de esquemas DB?
Solución
Cuando crea una columna como BIGINT (44)
el " 44 " es el ancho de la pantalla: no afecta el rango de valores que puede almacenar ni la velocidad a la que se recuperan.
Para un ID de incremento automático, desea utilizar un número UNSIGNED
, por ejemplo. BIGINT (44) SIN FIRMAR
. Esto duplicará el rango de valores y agregará una restricción adicional, lo que generalmente es bueno.
Un INT sin firmar almacenará hasta 4,294,967,295 Un BIGINT sin firmar almacenará hasta 18,446,744,073,709,551,615; no lo va a llenar en el corto plazo.
Usted no dice qué tan rápido está creciendo su ID máxima: si no está insertando muchas filas, entonces debería seguir con INT UNSIGNED
ya que ocupa menos espacio.
Otros consejos
Creo que cualquier clave principal no estará firmada por defecto. En cualquier caso, el uso de números negativos para las claves primarias está mal visto en el mejor de los casos, y rompe cosas.