Tôi đã viết truy vấn trong SQL Server 2008. Truy vấn mất khoảng 4 phút để thực thi.
Tôi cần truy vấn này dưới dạng View
. Vì vậy, tôi đã tạo ra một cái nhìn với truy vấn này và khi tôi cố gắng để thực thi kịch bản xem sáng tạo, nó cho thấy các lỗi sau:Lỗi "Hết thời gian chờ", khi thực hiện chế độ xem trong SQL Server 2008
Timeout Expired.
The timeout period elapsed prior to completion of the operation or the server is not responding.
Truy vấn là:
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
và T_ledger
cả các bảng có khoảng 100 nghìn hàng. Điều gì có thể là lý do có thể và làm thế nào tôi có thể vượt qua điều này?
Cập nhật:
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
Nó giải quyết vấn đề của tôi. Cảm ơn mọi người vì đã trả lời nhanh chóng của bạn.
tuyệt vời. Nó hoạt động như ma thuật. Phải mất 2 giây để thực hiện. đã không sử dụng 'NOT EXISTS' trước đây. cảm ơn. –