FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Optimizar consulta cruze de tablas
Hola! Buenas a todos!
Quiero ver si me podeis hechar una mano para optimizar una consulta que realizado en Firebird 2.5. Esta consulta la realizo mediante un procedimiento almacenado que retorna el resultado. El objetivo de la consulta es fusionar los datos de dos tablas. Los datos de las tablas son una el stock y la otra el stock pendiente. Por fusionar quiero decir que salgan todos los datos coincidentes y los que no, en el caso de los coincidentes que salgan en un solo registro. Un ejemplo del codigo es el siguiente:
La consulta funciona correctamente, pero en los casos en que en la tabla pendientes hay muchos registros se enlentece mucho, como un minuto.. Las dos tablas tienen un indice que coincide con la union de las dos tablas y segun parece lo usa, pero claro este tipo de union full outer multiplica el numero de accesos...
__________________
Saludos, Bitman Última edición por Toni fecha: 10-09-2014 a las 14:30:11. |
#2
|
|||
|
|||
Nadie tiene una idea?
__________________
Saludos, Bitman |
#3
|
||||
|
||||
Es que es difícil poder ayudar si no tenemos unaa base de datos para probar, conocer los índices implicados, el plan, etc., además de conocer la estructura las tablas, etc.
|
#4
|
|||
|
|||
Hola Casimiro,
Mira las tablas y sus indicies son los siguientes
Como el objetivo de este procedimiento es cruzar ambas tablas pues en los casos que hay un cierto volumen de registros la cosa se demora mucho y lo hace inoperativo. Por mucho puede ser unos >4000 registro en StockTotalPorAlmacen y >800 registros en StockPendientes. El plan usado es que utilizada FB, pero segun puedo ver en el IBManager si utiliza la clave principal para las busquedas.
__________________
Saludos, Bitman Última edición por Toni fecha: 19-09-2014 a las 17:00:03. |
#5
|
||||
|
||||
¿Y exactamente qué campos de qué tablas con qué filtros son los que necesitas?
|
#6
|
|||
|
|||
Necesito el resultado total del cruce de ambas tablas.
Campos, los que se ven en el 'for select'
Filtros ninguno, cargo todo el resultado en un clientdataset. En la mayoria de casos tal y como esta funciona con unos tiempos correctos. No suelen tener tantos registros en la tabla pendientes. Pero en un caso en concreto si y se vuelve tan lento que tal y como esta diseñado no es operativo. El motivo de la pregunta es ver si se puede optimizar la consulta tal cual esta planteado. Sino tendre que replantearlo todo tal y como esta diseñado..
__________________
Saludos, Bitman Última edición por Toni fecha: 19-09-2014 a las 17:07:05. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Optimizar consulta | JAI_ME | Varios | 7 | 19-08-2013 10:38:09 |
Optimizar consulta con Union ALL | chinosoft | Firebird e Interbase | 2 | 06-10-2010 18:02:19 |
optimizar consulta | martinchooozzz | SQL | 5 | 15-12-2009 18:11:42 |
Optimizar Consulta en Firebird | AGAG4 | Firebird e Interbase | 14 | 10-01-2006 02:11:30 |
Optimizar Consulta | dunia_lv | MS SQL Server | 2 | 21-04-2005 09:43:51 |
|