optimizar - MySQL-usando String como clave principal
llave primaria varchar (1)
No hay nada de malo en usar un CHAR o VARCHAR como clave principal.
Seguro que tomará un poco más de espacio que un INT en muchos casos, pero hay muchos casos en los que es la opción más lógica e incluso puede reducir el número de columnas que necesita, lo que mejora la eficiencia, evitando la necesidad de tener un campo ID separado.
Por ejemplo, los códigos de país o abreviaturas de estado ya tienen códigos de caracteres estandarizados y esta sería una buena razón para usar una clave principal basada en caracteres en lugar de crear una ID de número entero arbitrario para cada uno además.
Ya vi una publicación similar en Stack Overflow, pero no estaba del todo satisfecho.
Digamos que ofrezco un servicio web. http://foo.com/SERVICEID
SERVICEID es una ID de cadena única utilizada para hacer referencia al servicio (base 64, mayúsculas / minúsculas + números), similar a cómo los servicios de acortador de URL generan ID para una URL.
Entiendo que hay problemas de rendimiento inherentes al comparar cadenas versus enteros.
Pero tengo curiosidad de cómo optimizar al máximo una clave principal de tipo String.
Estoy usando MySQL, (actualmente usando el motor MyISAM, aunque reconozco que no entiendo todas las diferencias de motor).
Gracias.
Para mi propósito, la cadena era en realidad un entero codificado en base62, por lo que la clave primaria era un número entero, y como no es probable que exceda el tamaño de Bigint, simplemente no tiene demasiado sentido usar otra cosa (para mi caso de uso particular)