SQL Server - AYUDA CONSULTA SQL

 
Vista:

AYUDA CONSULTA SQL

Publicado por Alfredo (1 intervención) el 13/08/2009 10:45:42
Hola, tengo SQL Server 2005 y esta misma consulta, en una BD me funciona sin problemas y en otra se me queda colgada. En principio, son 2 bd idénticas (con datos diferentes, pero mismas tablas, campos, cp y cr)

El caso es que se me muere en el trozo que he comentado, y no sé que más mirar o probar.
¿Se os ocurre algo? Alguna comprobación que deba hacer??
He verificado las claves, he verificado las constraints, he ejecutado la consulta 1 por 1 y me responde.

Si alguien me pudiera echar 1 mano, eternamente agradecido!

SELECT A000.BOLETIN C0 , A003.NOMBRE C1 , DBO.CONVERTIR_FEC_DATE(A003.FEC_DENUNCIA) C2 , A003.PRECEPTO C3 , A004.TEXTO C4 , A004.IMP_RDC_EURO C5 , A004.IMP_S_RDC_EURO C6 , A004.PREC_ACTIVO C7 , A004.NORMA C8 , A005.DESCRIPCION C9 , A004.ARTICULO C10 , A004.APARTADO C11 , A004.OPCION C12 , A004.TIPO C13 , A006.NOMBRE C14 , A003.KM C15 , A003.DIRECCION C16 , A003.HECHO_DENUNCIADO C17 , DBO. CORTAR_CADENA( A003.AGENTE , 6, 14 ) C18 , A003.LUGAR C19 , A008.NOMBRE C20 , A008.TIPO C21 , A008.SENTIDO C22 , A009.NOMBRE C23 , A003.HOR_DENUNCIA C24 , A003.MATRICULA C25 , A010.MARCA C26 , A010.MODELO C27 , A001.EXP_PEN C28 , DBO. CORTAR_CADENA( A002.EXPEDIENTE , 6, 11 ) C29 , A003.OBSERVACIONES_CONDUCTA C30 , A003.ALEGACIONES C31 , A007.OBSERVACIONES C32 , A000.EXP_DENUNCIA C33 , A000.CODIGO C34 , A003.CODIGO C35

FROM DOC_ENTRADA A000 , CIUDADANOS A001 , DOC_SALIDA A002 , DENUNCIAS_TRAFICO A003 , PRECEPTOS A004 , NORMATIVA_PRECEPTO A005 , TIPO_PRECEPTO A006 , AGENTES A007 , CALLES_VIAS A008 , CALLE_SENTIDO A009 , VEHICULOS A010

WHERE ( A000.CODIGO <> 0 AND A000.CODIGO IN ('9007186', '9007187', '9007188', '9007189', '9007190', '9007191', '9007192', '9007193', '9007194', '9007195', '9007196', '9007197', '9007198', '9007199', '9007200', '9007201', '9007202', '9007203', '9007204', '9007205', '9007206', '9007207', '9007208', '9007209', '9007210', '9007211', '9007212', '9007213', '9007214', '9007215', '9007216', '9007217', '9007218', '9007219', '9007220', '9007221', '9007222', '9007223', '9007224', '9007225', '9007226', '9007227', '9007228', '9007229', '9007230', '9007231', '9007232', '9007233', '9007234', '9007235', '9007236', '9007237', '9007238', '9007239', '9007240', '9007241', '9007242', '9007243', '9007244', '9007245', '9007246', '9007247', '9007248', '9007249', '9007250', '9007251', '9007252', '9007253', '9007254', '9007255', '9007256', '9007257', '9007258', '9007259', '9007260', '9007261', '9007262' ) )
AND A000.PROCEDENCIA=A001.DNI
/*******************************
AND ((EXISTS(SELECT 1 FROM DOC_SALIDA W1 WHERE A000.REF_SALIDA = W1.CODIGO) AND A000.REF_SALIDA=A002.CODIGO)
or (not EXISTS(SELECT 1 FROM DOC_SALIDA W1 WHERE A000.REF_SALIDA = W1.CODIGO) AND A002.CODIGO=0))
AND ((EXISTS(SELECT 1 FROM DENUNCIAS_TRAFICO W1 WHERE A000.EXP_DENUNCIA = W1.CODIGO) AND A000.EXP_DENUNCIA=A003.CODIGO)
OR (NOT EXISTS(SELECT 1 FROM DENUNCIAS_TRAFICO W1 WHERE A000.EXP_DENUNCIA = W1.CODIGO) AND A003.CODIGO=' '))
/*******************************
AND A003.PRECEPTO=A004.CODIGO
AND A004.NORMA=A005.CODIGO
AND A004.TIPO=A006.CODIGO
AND A003.AGENTE=A007.NUM_PLACA
AND A003.LUGAR=A008.CODIGO
AND A008.SENTIDO=A009.CODIGO
AND A003.MATRICULA=A010.MATRICULA
ORDER BY A000.CODIGO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:AYUDA CONSULTA SQL

Publicado por Isaias (4558 intervenciones) el 13/08/2009 21:52:09
Tu codigo se puede mejorar un 90%, empezando porque las ligas entre tablas, las estas haciendo en el WHERE (a la antigua) y deberias usar JOIN.

Nunca hagas este tipo de comparaciones:

A000.CODIGO <> 0

Es mucho mejor:

A000.CODIGO > 0

Si los codigos que estan como constantes despues del IN(

A000.CODIGO IN ('9007186', '9007187',

no estan en una tabla, seria bueno que los pusieras auque sea en una temporal y hacer un EXISTS( )

Separa tus comparaciones de los signos

AND A003.PRECEPTO=A004.CODIGO

Es mejor

AND A003.PRECEPTO = A004.CODIGO

¿Como andamos de INDICES?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar