Các bác ơi, e có đoạn truy vấn sql viết ở dưới. Khi execute thì mất tận 4-5s mặc dù records trả về không nhiều lắm. Các bác giúp e optimize lại đoạn này được k ah ? thanks
DECLARE @SoPhieu NVARCHAR(50) = 'SO.68.10418'
DECLARE @BusinessId VARCHAR(30) = '46'
SELECT
TOP(30)
T.ID AS IDPhieuBan,
T.SoPhieu,
T.NgayXuat,
T.IDKhachHang,
T.DiaChi,
T.DienThoai,
T.Kieu,
T.TheGiamGia,
k.MaKhachHang,
k.TenKhachHang
FROM (
SELECT TOP(10)
c.ID,
c.SoPhieu,
c.NgayXuat,
c.IDKhachHang,
C.DiaChi,
C.DienThoai,
'SO' AS Kieu,
ISNULL(c.TheGiamGia, 0) AS TheGiamGia
FROM dbo.SaleOnline c WITH (NOLOCK)
INNER JOIN kse_func_Accounting_GetTrangThaiDonHang() TT ON TT.TTHAI = C.TrangThaiPhieu
WHERE c.SoPhieu LIKE N'%' + @SoPhieu + '%'
AND c.BusinessId = @BusinessId
UNION ALL
SELECT TOP(10)
c.ID,
c.SoPhieu,
c.NgayXuat,
c.IDKhachHang,
C.DiaChi,
C.DienThoai,
'BB' AS Kieu,
0 AS TheGiamGia
FROM dbo.SE_XuatBanBuon c WITH (NOLOCK)
INNER JOIN kse_func_Accounting_GetTrangThaiDonHang() TT ON TT.TTHAI = C.TrangThaiPhieu
WHERE c.SoPhieu LIKE N'%' + @SoPhieu + '%'
AND c.BusinessId = @BusinessId
UNION ALL
SELECT TOP(10)
c.ID,
c.SoPhieu,
c.NgayXuat,
c.IDKhachHang,
C.DiaChi,
C.DienThoai,
'BL' AS Kieu,
ISNULL(c.TheGiamGia, 0) AS TheGiamGia
FROM dbo.SE_XuatBanLe c WITH (NOLOCK)
INNER JOIN kse_func_Accounting_GetTrangThaiDonHang() TT ON TT.TTHAI = C.TrangThaiPhieu
WHERE c.SoPhieu LIKE N'%' + @SoPhieu + '%'
AND c.BusinessId = @BusinessId
) T
INNER JOIN dbo.DM_KhachHang k WITH (NOLOCK) ON T.IDKhachHang = k.ID
WHERE k.BusinessId = @BusinessId