簡體   English   中英

使用JOIN和大約600萬行來加快SQL的MIN,MAX

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM