嗨,我正在使用SQL Server 2008.在我的數據庫中有一個表,名爲MemberBusiness
。我想從該表中獲取數據。在更短的時間內從表中獲取數據
這是我的存儲過程
SELECT BrokerId ,
RankId ,
MemberId ,
InstallmentId ,
PlanId ,
IntroducerId ,
Date ,
SelfAmount ,
UnitAmount ,
SpotAmount ,
ORBPercentageSelf ,
ORBPercentageUnit ,
ORBAmountSelf ,
ORBAmountUnit ,
IsSelfBusiness ,
Mode ,
InstallmentNo ,
PlanType ,
PlanName ,
CompanyId ,
CscId ,
Year ,
CreateDate ,
ModifideDate
FROM dbo.MemberBusiness AS mb
WHERE (@CscId = 0
OR mb.CscId = @CscId
)
AND (@CompanyId = 0
OR CompanyId = @CompanyId
)
AND BrokerId IN (SELECT bt.BrokerId
FROM #brokerTable AS bt)
AND mb.Date >= @StartDate
AND mb.Date <= @EndDate
AND mb.RankId >= @FromRankId
AND mb.RankId <= @ToRankId
在MemberBusiness
桌子上有大約16560352個記錄。 SP以上給我1300條記錄,大約需要30秒來執行,這對我來說是不可接受的。我已經使用了索引,但仍需要很長時間才能執行。怎麼能這樣做更快?謝謝。
這是您的SP中唯一的查詢? –
'@CompanyId = 0或者CompanyId = @ CompanyId'等會阻止正確的索引使用,除非你使用'OPTION(RECOMPILE)'。嘗試添加,如果仍然在執行計劃和表定義包括索引後發佈問題。 –
將'in'改爲連接將是一件事情。但首先要做的是在解釋前面加上查詢,它會告訴你它在做什麼。你可以將這個輸出添加到問題中,也許我們可以提出一個或兩個想法。 –