He escrito una consulta en SQL Server 2008. La consulta tarda aproximadamente 4 minutos en ejecutarse.
Necesito esta consulta como View
. Por lo tanto, he creado una vista con esta consulta, y cuando trato de ejecutar el script de creación de vista, se muestra el siguiente error:Error "Tiempo de espera caducado" al ejecutar la vista en SQL Server 2008
Timeout Expired.
The timeout period elapsed prior to completion of the operation or the server is not responding.
La consulta es:
SELECT t.jrnno,
(SELECT SUM(t1.amount)
FROM dbo.T_sh AS t1
WHERE (t1.b_or_s = '1') AND (t1.jrnno = t.jrnno)) AS buy,
(SELECT SUM(t2.amount)
FROM dbo.T_sh AS t2
WHERE (t2.b_or_s = '2') AND (t2.jrnno = t.jrnno)) AS sale,
SUM(t.amount) AS Total,
SUM(t.h_crg) AS Howla,
SUM(t.l_crg) AS Laga,
SUM(t.taxamt) AS Tax,
SUM(t.commsn) AS Commission
FROM dbo.T_sh AS t
WHERE (t.tran_type = 'S')
AND (t.jrnno NOT IN (SELECT DISTINCT jrnno
FROM dbo.T_ledger))
GROUP BY t.jrnno
T_sh
y T_ledger
tanto las tablas tienen alrededor de 100K filas. ¿Cuál podría ser la razón posible y cómo puedo superar esto?
Actualización:
select
t.jrnno,
SUM(CASE WHEN t.b_or_s = 1 THEN t.amount ELSE NULL END) buy,
SUM(CASE WHEN t.b_or_s = 2 THEN t.amount ELSE NULL END) sale,
SUM(t.amount) AS Total,
SUM(t.h_crg) AS Howla,
SUM(t.l_crg) AS Laga,
SUM(t.taxamt) AS Tax,
SUM(t.commsn) AS Commission
FROM
dbo.t_sh t
WHERE
t.tran_type = 'S'
AND NOT EXISTS(SELECT 1 FROM dbo.T_ledger x where x.jrnno = t.jrnno)
group by
t.jrnno
Se resolvió mi problema. Gracias a todos por su rápida respuesta.
genial. Funciona como magia. Tardó 2 segundos en ejecutarse. no usó 'NO EXISTE' antes. Gracias. –