一个两亿条记录的表,一个简单却耗时的查询,如何建索引?
有一表TableName,共2.3亿条记录
timestamp DATETIME --时间部分都是零点,日期从2006年至今,即700多个唯一值,各唯一值的比例相当,每个唯一值即每天大概30万条记录
site VARCHAR(10) --10个唯一值,各唯一值的比例相当
userName VARCHAR(50) --唯一值很多,各唯一值比例无规律
pages INT --绝大部分都是小于10
SELECT site,SUM(pages),COUNT(DISTINCT userName)
FROM TableName
WHERE timestamp BETWEEN '20080301' and '20080318'
GROUP BY site
原来表上有个非聚集索引(timestamp,site),查询大概半小时。后来又加了一个非聚集索引(timestamp,site,pages,userName),无明显改善。
那么应该如何建索引?请说明理由。因为我几乎不可能一一去偿试,因为太慢了,建第一条索引用了一个小时,第二条用了两个半小时。