sql server语言 - 加速最小,最大的sql与连接和大约6M行



我在MSSQL 2008 DB中有大约6M+行的表[数据]。我需要得到最小和最大从那连接一些表和组的特定字段。

这是查询:

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)上的索引将覆盖查询的索引。因为没有访问数据页,所以这也应该更快。

相关内容

  • 没有找到相关文章

最新更新