Napisałem zapytanie w SQL Server 2008. Zapytanie trwa około 4 minut. Musisz mieć to zapytanie jako View
. Więc stworzyliśmy widok z tego zapytania i gdy próbuję uruchomić skrypt tworzenia widoku, pokazuje następujący błąd:Wystąpił błąd "Upłynął limit czasu" podczas wykonywania widoku w SQL Server 2008
Timeout Expired.
The timeout period elapsed prior to completion of the operation or the server is not responding.
kwerenda jest:
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
i T_ledger
zarówno tabele mają około 100 tysięcy wierszy. Jaki może być możliwy powód i jak mogę go pokonać?
Aktualizacja:
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
się rozwiązać mój problem. Dziękuję wszystkim za szybką odpowiedź.
świetnie. Działa jak magia. Wykonanie trwało 2 sekundy. wcześniej nie używał "NOT EXISTS". dzięki. –