[英]Speeding up MIN, MAX for SQL with JOINs and about 6M rows
我在MSSQL 2008 DB中有大約6M +行的表[data]。 我需要從聯接表中按特定字段分組來獲得MIN和MAX。
那就是查詢:
SELECT sites.id,
MIN(data.created),
MAX(data.created)
FROM [data] JOIN
[columns] on data.columnID = columns.id
JOIN [sites] on columns.sitesID = sites.id
GROUP BY sites.id
運行大約需要20到25秒,理想情況下應該以毫秒為單位,我認為這可以通過一些智能索引操作來實現。
我怎么做?
目前,我已在所有JOIN字段上建立索引,但這似乎還不夠。
謝謝
假設不需要進行sites
表的篩選,則您的查詢等效於:
SELECT c.sitesID, MIN(d.created), MAX(d.created)
FROM [data] d JOIN
[columns] c
on d.columnID = c.id
GROUP BY c.sitesID;
這可能運行得更快。 你有columns(id)
的索引嗎?
data(columnId, created)
和columns(id, sitesId)
索引將覆蓋查詢的索引。 因為不訪問數據頁,所以這也應該更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.