Ver Mensaje Individual
  #8 (permalink)  
Antiguo 03/11/2014, 19:00
ricardobit
 
Fecha de Ingreso: noviembre-2014
Mensajes: 7
Antigüedad: 9 años, 6 meses
Puntos: 1
Respuesta: Optimización de una tabla, ¿influye el orden de las columnas? ¿las indexo?

Hola Gnzsoloyo, gracias por tu interés.

Todos los apellidos son únicos en la tabla, no se repiten, salvo que algunos tienen acento y otros no. Y posiblemente hayan vocales con diéresis, circunflejos, ç, ñ, etc.

Per ejemplo, existen registros así:
Abreu
Abréu

Pero no hay ningún registro duplicado tipo:
Abreu
Abreu

La diferencia del acento en los apellidos se debe a que algunos siguen la ortografía del idioma español, pero otros provienen de otros idiomas como el francés o el catalán, donde las reglas de acentuación son diferentes.

He probado de cambiar el cotejamiento de la columna 'palabra' de 'utf8_spanish_ci' a 'utf8_bin' y entonces admite sin problemas indexar la columna como UNIQUE.

Pero en utf8_bin, al buscar por '%eu' me sale sólo "Abreu" y no aparece "Abréu".

Si intento hacer lo mismo en 'utf8_spanish_ci', entonces aparece el error:

Código:
ALTER TABLE `Sql11XXX_1`.`Apellidos` ADD UNIQUE `apellido` ( `apellido` ) 
MySQL ha dicho:
#1062 - Duplicate entry 'Abréu' for key 2
Supongo que se debe a que en 'utf8_spanish_ci', con o sin acento da igual, para MySQL es un registro duplicado.

Esta tabla es para investigación genealógica, raíces de los apellidos, etimología, estadísticas y cosas así. Consta de una sola tabla, no se relaciona con ninguna otra tabla. Parece todo muy simple, pero la dificultad es que hay un millón de registros y que a veces puede tener picos altos de personas haciendo diferentes consultas al mismo tiempo como cuando se utilice en cursos sobre el tema.