Ver Mensaje Individual
  #11 (permalink)  
Antiguo 01/10/2014, 09:23
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Cómo indexar la base de datos

Cita:
1.- las tablas tienen solamente un índice, el de la clave principal, ninguno más, por lo que no entiendo que digas exceso de índices.
Código MySQL:
Ver original
  1. CREATE TABLE `t_administradores` (
  2.   `user` varchar(20) NOT NULL,
  3.   `pass` varchar(20) NOT NULL,
  4.   PRIMARY KEY (`id`),
  5.   KEY `pass` (`pass`),
  6.   KEY `user` (`user`),
  7.   KEY `pass_2` (`pass`),
  8.   KEY `id` (`id`),
  9.   KEY `user_2` (`user`),
  10.   KEY `id_2` (`id`),
  11.   KEY `user_3` (`user`),
  12.   KEY `pass_3` (`pass`),
  13.   KEY `id_3` (`id`)
Cada indicacion d KEY crea un índice...
Cita:
2.- dices que no está en 1FN, porqué existe algun campo vació?
Un campo vacío no implica que no esté en 1FN. Entre otras cosas tienes más de un campo sobre el mismo dominio, por ejemplo:

Código MySQL:
Ver original
  1. CREATE TABLE `t_un` (
  2. ....
  3.   `foto1` varchar(255) DEFAULT NULL,
  4.   `foto2` varchar(255) DEFAULT NULL,
  5.   `foto3` varchar(255) DEFAULT NULL,
  6.   `foto4` varchar(255) DEFAULT NULL,
  7.   `foto5` varchar(255) DEFAULT NULL,
  8.   `foto6` varchar(255) DEFAULT NULL,
  9. ...
  10. ) ENGINE=MyISAM AUTO_INCREMENT=325928 DEFAULT CHARSET=latin1;
y eso está mal diseñado. Eso se debe haer con una tabla adicional, y no agregando campos, ni aún cuando los uses todos.
Nota: eso no es lo único que define la 1FN.

Cita:
4.- "Los campos de TEXT deberían ser usados en índices de tipo FULLTEXT, aprovechando que usas tablas MySAM.", no entiendo a qué campos te refieres, los varchar?
A este caso, por ejemplo:
Código MySQL:
Ver original
  1. CREATE TABLE `t_en` (
  2.   ...
  3.   `descripcion` text,
  4.   ...
  5. ) ENGINE=MyISAM;
Y NO, no confundo TEXT con VARCHAR...
Cita:
5.- En cuanto al order? Pero si quieres los campos ordenados, cómo lo haces?
No dije que no se pueda usar, sino que cuando la consulta devuelve muchos registros el ORDER BY, así como el GROUP BY, son asesinos de performance. En esos casos lo primero que hay que ver es un buen EXPLAIN de la consulta, para asegurrse que sea óptima.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)