Ver Mensaje Individual
  #19 (permalink)  
Antiguo 21/11/2013, 12:05
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: 17 años
Puntos: 2658
Respuesta: consulta en mysql sobre 3 tablas

Es que a mi entender te estás ahorgando en un dedal de agua. No es tan dificil ni engorroso crear consultas con condiciones que se incluyen dinámicamente. Quienes nos dedicamos al desarrollo lo hacemos constantemente y no es muy pesado.
Simplemente a nivel programático evaluamos lo que el usuario incluyó de lo que la aplicación le permite, y en base a ello se van agregando al WHERE las condiciones necesarias.
¿Es largo de programar?
Si.
¿Es difícil?
No.
¿Es eficiente?
Si.
¿Hay otras alternativas?
Depende. Si quieres crear consultas eficientes o mínimamente optimizadas, en realidad no. Porque te permite acotar las búsquedas y evitar traer resultados falsos o innecesario, lo que termina redundando en beneficio de la aplicación.
Ten en cuenta un principio básico: Si una consulta aplica índices, pero las condiciones del WHERE son tales que puede leer la mitad de la tabla, entonces leerá toda la tabla (full scan), porque descartará el índice... sin que tu te des cuenta.

Moraleja: Tomate el tiempo necesario, crea las consultas con criterios más específicos, y más eficientes. Y si eso implica crear 345 consultas y 300 funciones en la DAC para lograrlo, pues hazlas.

La aplicación que nosotros tenemos tiene más de 200 consultas sólo en un paquete de procedimientos, y tiene más de 500 de estos.
¿Ha hecho pesada a la aplicación?
No. Es muy eficiente. Porque cada consulta es CONCRETA, y por ende, no desperdicia recursos. La resolución de cuál llama está en el codebehind de la aplicación, no en la base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)