加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver2005 中的 year() month() 与索引之间的关系

发布时间:2020-12-12 15:10:11 所属栏目:MsSql教程 来源:网络整理
导读:目前做的系统数据量比较大,出现了速度慢的问题 逐步分析发现了几个问题,拿出来与大家讨论一下 ? ? 表1 有如下字段 ppid? int--厂名 indicatorsid? int--指标名 ?datatime datetime 日期 datavalue????? float 值 这个表表示某个厂某个时间某个指标的值 ?

目前做的系统数据量比较大,出现了速度慢的问题

逐步分析发现了几个问题,拿出来与大家讨论一下

?

?

表1 有如下字段

ppid? int--厂名

indicatorsid? int--指标名

?datatime datetime 日期

datavalue????? float 值

这个表表示某个厂某个时间某个指标的值

?

主键为? ppid,indicatorsid,datatime 联合主键

索引建立在 datatime 上

实验1

?

使用

?select count(*) from 表1

?where year(datatime)=2010 and month(datatime)>=8 and month(datatime)<=8

用时 18ms

?

使用

?select count(*) from 表1

?where datatime>='2010-8-1' and datatime<='2010-8-31'

用时 2ms

?

?

为什么会出现这么大的差距离

?

当在索引字段上使用了各种函数后,实际的选择过程便由 “索引查找”,变成了“索引扫描”了。会遍历所有的行的索引项,使执行过程变慢

?

而使用直接比较的方法 则充份利用了索引的优势

?

不知是否为正解,欢迎大家讨论

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读