2017-06-14 18 views
0

DBMS慢:Microsoft SQL Server的 修訂 - 記錄總數表:972848614 修訂 - 查詢返回校長SQL:數據檢索是大量的記錄

修訂 查詢獲得計數:從MemberBetDetail中選擇計數(*),其中memberCode ='test'且betstatusId = 1且winlossAmount!= 0

花了9:46分鐘,結果:4741350

查詢得到的結果:從MemberBetDetail選擇memberCode,betstatusId,winlossAmount其中memberCode = '測試',並betstatusId = 1和winlossAmount = 0

花了7:26分,結果:4741350

表結構和索引

Table Schema

Indexes

總共有4753780條記錄我想要檢索,但耗時將近8分鐘。有人能指出什麼是它

我使用基於MemberCode,貨幣代碼和StatusId

簡單查詢的實際問題更新時間:

執行計劃enter image description here

+0

您正在使用哪個[DBMS](https://en.wikipedia.org/wiki/DBMS)? Postgres的?甲骨文? –

+0

向我們展示您正在使用的查詢和執行計劃。 –

+0

這可能不是一個答案,而是一個提示,你有沒有考慮使用索引來加快查詢? –

回答

0

試圖通過將非聚集索引表...

create NONCLUSTERED index myIndex on Table1(Column2) include (col1,col2,clo3) 
+0

已經在使用非聚集索引 –

+0

第一: [MemberCode] ASC, [BetStatusID] ASC 二: [ProviderCode] ASC, [BetID] ASC 三: [UpdatedDate ] ASC, [BetStatusID] ASC –

+0

請參考本站http://searchsqlserver.techtarget.com/tip/Tricks-to-increase-SQL-Server-query-performance – Nithin

0

As Nith在說,嘗試在您的查詢中替換*所需的列,並將這些列包含在基於WHERE子句中使用的3列的新索引中。 這應避免鍵查找的需要。

CREATE NONCLUSTERED INDEX OPTIM_1 ON MemberBetDetail(MemberCode ASC, CurrencyCode ASC, BetStatusId ASC) 
     INCLUDE (colYouNeed1, colYouNeed2, ColYouNeed3)