FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Sql lenta la primera vez
Utilizo D7 y FB1.5 me ocurre que la primera vez que ejecuto la sql de abajo me va lento aproximadamente tarda 1 minuto.
Si la vuelvo a ejecutar posteriormente ya va rapida unos 2 segundos. Para que vaya lenta debo cerrar el pc y encenderlo de nuevo. en Historico y en Articulos existe una clave para ARTICULO. Todas las claves estan activas. ¿Alguna sugerencia? |
#2
|
||||
|
||||
El problema es que debe recorrer por completo la tabla de 'historico' para hacer el sum() de los campos 'salidas' y 'entradas'.
Y se supone que en 'historico' tienes muchos registros. Y por si fuese poco, lo tiene que recorrer por cada artículo. Yo probaría primero con el 'select sum()' con cualquier artículo para ver cómo se comporta, y una vez afinado ese select es cuando lo probaría por completo. |
#3
|
|||
|
|||
Digamos que tu consulta es simplemente muy fea jajaja, ahora veamos como podria ser para acelerar un poco el sql
|
#4
|
|||
|
|||
Usaria algo como esto... alguien tiene una mejor idea
Tambien podria ser INNER JOIN en lugar de LEFT JOIN pero eso lo dejo a criterio del creador de la base de datos Última edición por elarys fecha: 09-09-2010 a las 22:42:28. |
#5
|
|||
|
|||
Hay unos 7500 articulos y 95.000 registros en historico.
Con la consulta que me propones, continúa siendo lenta la primera vez. Ahora en vez de 1 minuto esta unos 30 segundos, y el resto de veces es más o menos igual. Lo que no entiendo es porque la primera vez es más lenta y despues más rápida. Estoy haciendo la consulta con IBExpert. Incluso parando el motor de base de datos y arrancando de nuevo, continúa siendo rápido. Pero si cierro el pc y lo reinicio vuelvo a ser lento la primera vez. Por cierto, casimiro, si primero hago un Cuando hago la select normal ya funciona rápido. Es como si tuviera que ver recorrerse una vez el historico..... |
#6
|
||||
|
||||
Pero si haces esa primera vez: select count(*) from historico
¿es lento también? Pásanos la estructura de la tabla |
#7
|
|||
|
|||
No, si hago primero el select count o select sum(), la primera vez ya funciona rapido.
Puedo enviarte la base de datos solo con las 2 tablas, ocupa 1,5Mb en rar. |
#8
|
||||
|
||||
envíamelo por email, si quieres
|
#9
|
||||
|
||||
Bueno, he estado haciendo algunas pruebas y no he detectado lentitud en ningún caso, ni la primera vez... ni ninguna
Código:
Select a.ARTICULO,a.DESCRIPCION, (Select Sum (b.ENTRADAS - b.SALIDAS) from HISTORICO b where b.ARTICULO = a.ARTICULO) as Stock From ARTICULOS a WHERE ARTICULO > 0 // <-- es un campo varchar(20), pon: where a.articulo<>'0' Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Conexion Con Interbase/FireBIrd lenta...muy lenta | federiconqn21 | Firebird e Interbase | 3 | 11-03-2010 13:13:34 |
Consulta sql lenta la primera vez | lledesma | Conexión con bases de datos | 2 | 07-07-2008 11:58:36 |
Ayuda con consulta lenta, lenta, lenta | Gregory Mazon | Firebird e Interbase | 22 | 27-06-2007 09:56:38 |
Primera consulta, mas lenta que el caballo del malo | papulo | Conexión con bases de datos | 20 | 23-09-2005 13:46:24 |
Primera llamada, primera | roman | Noticias | 12 | 06-07-2005 21:22:49 |
|