Ver Mensaje Individual
  #6  
Antiguo 26-11-2012
ARPE1 ARPE1 is offline
Miembro
 
Registrado: nov 2012
Posts: 43
Reputación: 0
ARPE1 Va por buen camino
SQL muy lenta la 1ª vez

Hola y gracias por el interés.
La BD ya tiene extensión FDB. El producto cartesiano puro y duro, en este caso, es obligado. Por varias razones necesito que todos los artículos (tabla2) que entran en la consulta estén en todos los almacenes (tabla3) del cliente.
Ya probé en otro equipo (el mío) con diferentes protocolos (local y tcp_ip), me psa lo mismo. Buena idea esa de probar otras consultas, de momento he lanzado el producto cartesiano "sin condiciones", más duro todavía, y lo ha resuelto rápido. Me queda probarlo con udf's por ver si es tema de reserva de memoria.
La consulta real es la siguiente:
Código SQL [-]
Merge into Artal using (
  Select artic.artic, almac.cod as almac, 
    asCreaTalla(Artic.Tope1, Artic.Tope2) as MTallas,
    asIniTalla(asCreaTalla(Artic.Tope1, Artic.Tope2), 0) as MCeros
  from artic, almac
  where Artic.Activo = 'S' and Artic.Filtro = 'MP'
Datos on (Artal.Artic = Datos.artic and Artal.Almac = Datos.Almac)
When not matched then
  insert (ARTIC, ALMAC, MTALLAS, MSTOCK, MSTMAX, MPRECIBIR, MSTMIN, MUCOMPRAS, MUVENTAS, MPSERVIR, MCURSOFA)
  values (Datos.Artic, Datos.Almac, Datos.MTallas, Datos.MCeros, Datos.MCeros, Datos.MCeros, Datos.MCeros, Datos.MCeros, Datos.MCeros, Datos.MCeros, Datos.MCeros)
Artal: tabla de poco más de un millón de registros con esos 14KB de longitud
Artic: unos 52.000 registros
Almac: 40 registros
asCreaTalla, asIniTalla son udf's que tratan cadenas de texto. Como he mencionado probaré a quitarlas de la consulta por ver si es ese el problema.
Toda la información que necesitéis la pedís, no hay problema, es por no extenderme mucho ya que los mensajes largos a mí me asustan.
Un slaudo.
Responder Con Cita