![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
21/07/2006, 13:13
|
![Avatar de claudiovega](http://static.forosdelweb.com/customavatars/avatar44992_1.gif) | | | Fecha de Ingreso: octubre-2003 Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 3 meses Puntos: 11 | |
He visto que las subconsultas son muy útiles, dado que facilitan la escritura de la consulta, pero en algunos casos la ejecucion de ésta es muy lenta.
Imagino que los problemas de lentitud pueden ser mitigados con un mejor diseño de la bd o agregando tablas resumen, pero no me he dado nunca dicho trabajo.
La solución que uso es comparar el operador IN o NOT IN con un arreglo, que creo usando otra consulta, asi:
1) hago esta consulta:
SELECT cliente FROM tbacum_art_cliente_diario WHERE fecha = '$fechaCal2'
con los datos construyo una cadena que tiene esta estructura:
('cliente1','cliente2','cliente3', ..., 'clienten')
2) ejecuto la consulta completa asi:
SELECT cli.con,cli.sucursal FROM tbclientes_db as cli,tbclientes_us AS us WHERE cli.con NOT IN ('cliente1','cliente2','cliente3', ..., 'clienten') and us.tipo = '2' AND cli.con = us.cli
Se nota el cambio en el rendimiento. |