Ver Mensaje Individual
  #2  
Antiguo 16-05-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Reputación: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Dado que el WHERE actúa sobre la tabla "CLIEPROV CP1" yo trataría de empezar por ahí las uniones con las otras tablas.

Código SQL [-]
SELECT MC.ID_MOV, DC.ID_DETCIL, MC.FECHADOC, DC.CIL,CI.TIPOGASID, TG.TIPOGAS,
CI.DESCRIPCION,CI.CAPACIDAD, MC.SERIE, MC.DOCUMENTO,DC.PLAZO,
DC.FECHADEV, DC.DOCDEV,MC.NOMDESTINO, CP1.NOMBRE,CP2.ID_CLIENTE,
CP2.TIPO, CP2.NOMBRE,DC.LUGAR, DC.OBSERVACION
FROM
CLIEPROV CP1
JOIN MOVCILINDROS MC ON MC.NOMDESTINO=CP1.ID_CLIENTE
JOIN DETALLECIL DC ON DC.MOVCIL=MC.ID_MOV
JOIN CILINDROS CI ON DC.CIL=CI.ID_CILINDRO
JOIN CLIEPROV CP2 ON CI.PROPIETARIO=CP2.ID_CLIENTE
JOIN TIPOGASES TG ON CI.tipogasid=TG.id
WHERE
CP1.ID_CLIENTE > 0

Además de esto probaría la consulta utilizando LEFT JOIN.


Los índices que utiliza aparentemente son los correctos y parecen óptimos.
Código SQL [-]
CLIEPROV CP1
JOIN MOVCILINDROS MC ON MC.NOMDESTINO=CP1.ID_CLIENTE
ALTER TABLE MOVCILINDROS ADD CONSTRAINT FK_MOVCILINDROS_DEST FOREIGN KEY (NOMDESTINO) REFERENCES CLIEPROV (ID_CLIENTE) ON DELETE NO ACTION ON UPDATE CASCADE;
y
Código SQL [-]
JOIN DETALLECIL DC ON DC.MOVCIL=MC.ID_MOV
ALTER TABLE DETALLECIL ADD FOREIGN KEY (MOVCIL) REFERENCES MOVCILINDROS (ID_MOV) ON DELETE CASCADE ON UPDATE CASCADE;
Responder Con Cita