Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-06-2019
Critter Critter is offline
Miembro
 
Registrado: may 2003
Posts: 60
Poder: 22
Critter Va por buen camino
Question Vista muy lenta

Hola compañeros:

Llevo varias semanas dándole vueltas a la siguiente vista y no encuentro la manera de hacer que sea más rápida.
Imagino que el problema esta en la unión de las 2 tablas de CLIENTES y CAMBIOS_CLIENTES, ya que tienen
muchos registros. La idea es traer los registros de los expedientes y el registro de cada cliente para que devuelva
exactamente el estado del cliente en la fecha del expediente.
La lentitud aparece cuando se filtra por el DOI_CLIENTE o CLIENTE, osea, las columnas involucradas en
VERSION_CLIENTE. Por supuesto hay indices para DOI_CLIENTE y CLIENTE. Añadir que el servidor es firebird 2.1.7

Quedo a la espera de vuestra ayuda.

Gracias.

Código SQL [-]

CREATE VIEW VW_SELECCION_EXPEDIENTE (ID, PERIODO, ACTIVO, NUM_EXPTE_SERIE, EXPTE_SERIE, EXPTE_SERIE_ABREV, FECHA_ALTA, ESTADO_ID, ESTADO, IDENTIFICADOR, OPCIONAL, TERMINADO, GESTION_ID, GESTION, GESTION_AMPLIADO, CLIENTE_ID, TRANSMITENTE_ID, PROVEEDOR_ID, DOI_CLIENTE, CLIENTE, DOI_PROVEEDOR, PROVEEDOR, DOI_TRANSMITENTE, TRANSMITENTE, ANCLADO, AS_OBSERVACIONES, ESTADO_COLOR, AS_VINCULOS, AS_TAREAS)
AS            
  WITH VERSION_CLIENTE AS (
    SELECT CLIENTEID AS ID, NIF_CIF, FULL_NAME, FMOD FROM CLIENTES
    UNION ALL
    SELECT CLIENTEID, NIF_CIF, FULL_NAME, FECHA_INSERCION FROM CAMBIOS_CLIENTES
  )
                   
SELECT DISTINCT
  EXPEDIENTES.EXPEDIENTEID,
  EXTRACT(YEAR FROM FECHA),
  EXPEDIENTES.ACTIVO,
  (LPAD(TRIM(EXPEDIENTES.NUMEXPTE), 8, '0') || '/' || LPAD(TRIM(EXPEDIENTES.SERIEEXPTE), 3, '0')) AS NUM_EXPTE_SERIE,
  EXPTE_SERIES.DESCRIPCION AS SERIE,  
  EXPTE_SERIES.ABREV,
  EXPEDIENTES.FECHA,
  EXPEDIENTES.ESTADOID,
  EXPTE_ESTADOS.DESCRIPCION AS ESTADO,
  EXPEDIENTES.IDENTIFICADOR,
  EXPEDIENTES.OPCIONAL,
  EXPEDIENTES.TERMINADO,
  EXPEDIENTES.GESTIONID,
  EXPEDIENTES.GESTION,
  COALESCE('['|| EXPTE_SERIES.ABREV || '] ', '') || EXPEDIENTES.GESTION,    
  EXPEDIENTES.CLIENTEID AS CLIENTEID,
  COALESCE(EXPEDIENTES.TRANSMITENTEID, ''),
  COALESCE(EXPEDIENTES.PROVEEDORID, ''),
  CLIENTE.NIF_CIF AS NIF_CIF_CLIENTE,
  CLIENTE.FULL_NAME AS CLIENTE,
  COALESCE(PROVEEDOR.NIF_CIF, '') AS NIF_CIF_PROVEEDOR,
  COALESCE(PROVEEDOR.FULL_NAME, '') AS PROVEEDOR,
  COALESCE(TRANSMITENTE.NIF_CIF, '') AS NIF_CIF_TRANSMITENTE,
  COALESCE(TRANSMITENTE.FULL_NAME, '') AS TRANSMITENTE,
  EXPEDIENTES.ANCLADO,
  IIF((EXPEDIENTES.OBSERVACIONES IS NULL) OR (TRIM(EXPEDIENTES.OBSERVACIONES)=''), 0,1) AS AS_OBSERVACIONES,
  EXPTE_ESTADOS.COLOR,
  IIF(EXISTS(SELECT EXPTEVINCULADOS.PRINCIPAL FROM EXPTEVINCULADOS WHERE (EXPTEVINCULADOS.PRINCIPAL = EXPEDIENTES.EXPEDIENTEID)), 1, 0) AS AS_VINCULOS,
  IIF(EXISTS(SELECT EXPTE_TAREAS.ID FROM EXPTE_TAREAS WHERE (EXPTE_TAREAS.EXPEDIENTEID = EXPEDIENTES.EXPEDIENTEID)),1, 0) AS AS_TAREAS
  FROM EXPEDIENTES
  
  LEFT JOIN VERSION_CLIENTE CLIENTE ON ((CLIENTE.FMOD <= EXPEDIENTES.FMOD) AND (CLIENTE.ID = EXPEDIENTES.CLIENTEID))
  LEFT JOIN VERSION_CLIENTE PROVEEDOR ON ((PROVEEDOR.FMOD <= EXPEDIENTES.FMOD) AND (PROVEEDOR.ID = EXPEDIENTES.PROVEEDORID))
  LEFT JOIN VERSION_CLIENTE TRANSMITENTE ON ((TRANSMITENTE.FMOD <= EXPEDIENTES.FMOD) AND (TRANSMITENTE.ID = EXPEDIENTES.TRANSMITENTEID))
  
  LEFT JOIN ESTADOSEXPTE EXPTE_ESTADOS ON EXPTE_ESTADOS.ESTADOID = EXPEDIENTES.ESTADOID
  LEFT JOIN EXPTESERIE EXPTE_SERIES ON EXPTE_SERIES.ID = EXPEDIENTES.SERIEEXPTE
  WHERE (EXPEDIENTES.EXPEDIENTEID > 0) AND (EXPEDIENTES.DELETED = 0)
;
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SQL muy lenta la 1ª vez ARPE1 Firebird e Interbase 39 29-11-2012 07:56:37
Conexion Con Interbase/FireBIrd lenta...muy lenta federiconqn21 Firebird e Interbase 3 11-03-2010 13:13:34
Ayuda con consulta lenta, lenta, lenta Gregory Mazon Firebird e Interbase 22 27-06-2007 09:56:38
Vista demasiado lenta!!! Hotmago Firebird e Interbase 7 03-06-2005 10:08:52
Impresion lenta, muy lenta... Perio Impresión 2 20-05-2005 13:10:00


La franja horaria es GMT +2. Ahora son las 17:54:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi