嗨在這裏,我有一個查詢,我需要改善此查詢的性能。任何人都可以建議我喜歡如何將聚簇索引掃描轉換爲索引查找。如何通過正確索引來提高查詢性能?
DECLARE @now DateTime;
DECLARE @lastweekstart DateTime;
DECLARE @lastweekend DateTime;
SET @now = getDate();
SET @lastweekstart = DATEADD(
DD,
-(DATEPART(DW, @now - 14) - 1),
@now - 14);
SET @lastweekend = DATEADD(
DD,
7 - (DATEPART(DW, @now - 14)),
@now - 14);
SELECT Distinct CHINFO.CHILDID,
COUNT(*) as PREVIOUSWEEKSACCIDENTS
FROM BKA.CHILDINFORMATION CHINFO
JOIN BKA.CHILDEVENTS CHE
ON CHE.CHILDID = CHINFO.CHILDID
JOIN BKA.CHILDEVENTPROPERITIES CHEP
ON CHE.EVENTID = CHEP.EVENTID
WHERE (CHE.TYPE = 'ACCIDENT' OR (CHE.TYPE = 'POTTYBREAK' AND CHEP.PROPERTY = 'SUCCESS'
AND CHEP.PROPERTYVALUE = 'FALSE'))
AND CHE.ADDDATE BETWEEN @lastweekstart AND @lastweekend
GROUP BY CHINFO.CHILDID
任何建議????????????
編輯:
主鍵:
表名 - >的ColumnName
CHILDINFORMATION - > childID的
CHILDEVENTS - > EVENTID
CHILDEVENTPROPERITIES - > EventPropertyId
外鍵:
CHILDEVENTPROPERITIES - >這裏EVENTID是CHILDEVENTS表的外鍵引用
CHILDEVENTS - >這裏childID的是CHILDINFORMATION表
非聚集索引的外鍵引用:
CHILDINFORMATION - >沒有非聚集索引
ChildEventProperities - > IX_CHILDEVENTproperities_EventId - >事件ID
ChildEvents - > IX_ChildEvents_Type - >類型
ChildEvents - > IX_ChildEvents_Type_AddDate - >類型,ADDDATE
你還嘗試過什麼嗎? – usr
我已經嘗試過使用不同的組合創建索引,但沒有運氣 – Rooney
我仍然在學習這方面的大部分內容,但是不是也取決於你的統計數據嗎?他們是最新的或設置爲自動?我們還討論了多少行?如果只有幾行,我認爲優化器會選擇執行掃描而不是查找。也許掃描是最佳方法? – ScubaManDan