Cita:
Iniciado por dezagus
Ámbas cosas. SIEMPRE tener una columna autoincrement, y utilizar dicha columna activamente, para todos los SELECT, UPDATE, DELETE.
Es relativo.
Las columnas autoincrementales son, las más de las veces, parches de programador a modelo de datos no muy bien diseñados. No son necesariamente buenas soluciones.
Es mejor un correcto modelado de datos, con consultas optimizadas, así como relevar los requerimientos del sistema y la eficiencia de la aplicación, que usar AI como solución mágica.
La solución que encontraste ´puede parecerte a ti eficiente y efectiva, pero desde nuestro lado no podemos saber con certeza si la decisión que tomaste es del todo correcta porque en realidad no conocemos ni tu modelo de datos, ni las queries que usas, ni tampoco lo bien o mal diseñada que está esa aplicación. Es información insuficiente para poder dar una opinión adecuada.
Tal es así, que a pesar de la solución que implementaste, a mi, esta frase:
Cita: El 85% de mi consumo estaba en las consultas MySQL.
me habla de tres defectos probables: exceso o mal manejo de conexiones, ineficiencia en el uso de consultas, y falta de optimización de la aplicación. Todos elementos que podrían corregirse sin necesidad de implementar AIs.
Lo que hace, si, el uso de AI como base de JOINs más eficiente es por que el acceso por claves numéricas es siempre más rápido que por claves alfanuméricas. Eso si.
Pero el hablar de claves numéricas no implica hablar de AI. Podríamos estar hablando en realidad de numeros de documento, o telefónicos, e igualmente obtener el mismo nivel de mejora.
Además, si la clave no es parte del resultado a utilizar, puedes estar usando accesos a disco innecesarios, y eso podría ser mejorado de otro modo.
Claro que estoy especulando, pero especulo en base a mi experiencia en BBDD, y he visto cambios brutales de eficiencia en consultas sin necesidad de implementar AIs...
Todo depende del contexto del sistema.