Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/12/2012, 14:14
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, 5 meses
Puntos: 2658
Respuesta: Consulta Demora mas de 10 minutos

Es difícil decir por dónde comenzar...
- ¿Por qué tantos campos TEXT? Ese tipo de campos sólo se usa para datos que requieran ese tipo de almacenamiento, y me cuesta creer que realmente todos esos campos sean necesarios así. ¿Por qué no VARCHAR?
- Hay iteraciones de atributos que podrían estar en otras tablas, y además campos que se infieren numéricos declarados como TEXT muestran una incorrecta definición de los tipos de dato.
- Tantas columnas, y el hecho de que se esté consultando sólo a una pequeña parte de ellas, me hace sospechar que esa tabla no está adecuadamente normalizada.
- El uso de JOIN implícitos (,) puede generar productos cartesianos. No podemos establecerlo porque sin conocer la estructura de las otras tablas es una suposición.
- La relación de tablas en el WHERE es de pésima performance. Está completamente desaconsejada y sería preferible declarar los INNER JOIN correspondientes en su lugar.
- El uso del REPLACE() permite inferir que existe un campo que parecer ser multivaluado, lo que es gravísimo para la performance de las consultas (sin olvidarse que es una violación flagrante del modelo relacional).
- LIKE se usa con cadenas de caracteres y no con números.
- Hay una subconsulta con un BY del que se desconoce el uso, pero en principio generaría un error de sintaxis.
...
Como dije: Es difícil decidir por donde empezar, pero yo empezaría por depurar el modelo de la tabla, porque esos campos TEXT no parecen razonables.

¿Podrías explicar estos puntos mencionados?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)