Estoy trabajando en una aplicación que implementará un valor hexadecimal como clave comercial (además de un campo de incremento automático como clave principal) similar al ID de URL que se ve en Gmail . Agregaré una restricción única a la columna y originalmente estaba pensando en almacenar el valor como un gran paso para alejarme de la búsqueda de un campo varchar, pero me preguntaba si eso es necesario si el campo es único.Rendimiento MySQL del campo varchar único frente a bigint único
Las uniones internas se realizarían utilizando el campo de incremento automático y el valor hexadecimal se usaría en la cláusula where para el filtrado.
¿Qué tipo de golpe de rendimiento habría en simplemente almacenar el valor como varchar (x), o tal vez un char (x) sobre el trabajo adicional al hacer la conversión hacia y desde hex para almacenar el valor como un entero en la base de datos? ¿Vale la pena la complejidad adicional?
Hice una prueba rápida en un pequeño número de filas (50k) y tuve tiempos de búsqueda similares. Si hay un gran problema de rendimiento, ¿sería lineal o exponencial?
Estoy usando InnoDB como motor.
Personalmente, realmente trato de evitar exponer al usuario a GUID en la interfaz de usuario. Incluso una línea de URL. Sin embargo, sugiero usarlos internamente y truncarlos * para visualizarlos * usando una sesión o usar un código específico. De esa manera & item = 1 es el primer elemento que mostré ... Tomo el GUID * internamente *. – Godeke