我有一张表 假设有字段 id,price,AddTime,
现在我想查这个月的price总和,还有上个月的price总和,或者去年某个月份的总和。
由于数据很多,我是不是应该给AddTime建立一个索引?(dateTime类型)
我现在知道的是比如
select * from A where AddTime between '2001-02-03' and '2002-03-03'
或者 AddTIme='' 这样设置查询条件的时候 AddTime这个索引是有效的。
但是我用的是
select * from A where CONVERT(char(6),i.AddTime,112)= '200506' 这样的形式的,
我想问,这个是有AddTime这个索引是不是无效了...
在这种情况下我该怎么做才能提高查询的速度...我需要的是 查询某年的某个月份。
我现在想的就是 把传进来的日期比如201506,把它改装成两个 2015-06-01 00:00:00 和 2015-06-30 23:59:59,然后用between
但是我觉得拆来拆去好恶心的说,我里面本来就很冗余了。
------解决思路----------------------
AddTime between '2001-02-03' and '2002-03-03' 这个方式 在你的数据的上下文中应该是会走索引的
CONVERT(char(6),i.AddTime,112)= '200506' 这个列进行计算了,在任何数据的上下文中不会走索引
该拆就拆吧,不过,对于时间范围,你应该改下习惯,万一精确到3又3分之毫秒呢
AddTime >= '2015-06-01' and AddTime < '2015-07-01'