Descomponiendo el rendimiento real de la comparación de cadenas frente a las no flotantes, en este caso cualquier tamaño sin firmar y firmado no importa. El tamaño es en realidad la verdadera diferencia en el rendimiento. Ya sea 1byte + (hasta 126bytes) versus comparación de 1,2,4 u 8 bytes ...obviamente, los elementos no flotantes son más pequeños que las cadenas y los flotadores, y por lo tanto más amigables con la CPU en el ensamblaje.
La comparación de cadena a cadena en todos los idiomas es más lenta que algo que se puede comparar en 1 instrucción por la CPU. Incluso comparar 8 bytes (64 bits) en una CPU de 32 bits es aún más rápido que un VARCHAR (2) o más grande. * De nuevo, observe el ensamblaje producido (incluso a mano), se necesitan más instrucciones para comparar el carácter char por char que el de la CPU de 1 a 8 bytes.
Ahora, ¿cuánto más rápido? depende también del volumen de datos. Si simplemente comparas 5 con 'audi', y eso es todo lo que tiene tu DB, la diferencia resultante es tan mínima que nunca la verías. Dependiendo de la CPU, la implementación (cliente/servidor, web/script, etc.) probablemente no lo verá hasta que llegue a unos pocos cientos de comparaciones en el servidor de bases de datos (tal vez incluso un par de miles de comparaciones antes de que se note).
- Para anular la disputa incorrecta sobre las comparaciones de hash. La mayoría de los algoritmos hash en sí mismos son lentos, por lo que no se beneficia de cosas como CRC64 y menor. Durante más de 12 años desarrollé algoritmos de búsqueda para motores de búsqueda de varios condados y 7 años para las agencias de informes crediticios. Todo lo que pueda mantener en números será más rápido ... por ejemplo, números de teléfono, códigos postales, incluso moneda * 1000 (almacenamiento) div div 1000 (recuperación) es más rápido que DECIMAL para las comparaciones.
Ozz
Gracias por todas sus respuestas e información adicional. Has demostrado mi sospecha y has hecho mi elección fácil. – googletorp