datetime列是否有必要建索引

澄清:请看评论区,这里只是本人当初在学习时在网上搜罗的答案,不代表个人观点,请自行判断。

准备用一datetime列存储 登记时间;
1、索引最好建立在重复性较多的列,datetime很明显重复性很少,建立索引有用吗?
2、重复性较少的记录,如果建立索引,是否索引要耗去很多存储空间?
3、如果SQL查询一般是按天来查,是否有必要新增一个date冗余列来存储 登记日期?
4、char(8),date,int都可以存储日期,char和int还有更好的移植性,是这样?

答:

第一个问题,大原则是,只要有直接比较的查询如=,>,<列名这样的,就需要建索引。 第二个问题,存储空间消耗基本是一样的,中间节点的键值多几位标识而已,相对叶子节点的存储空间很小 第三个问题,如果这个查询运行频繁就有必要,同时要对冗余列建索引 第四个问题,可以,但没啥必要,datetime类型提供一系列函数,换成其它类型的话如果用到日期计算功能就要自己写函数了。

补充:3、如果SQL查询一般是按天来查,是否有必要新增一个date冗余列来存储 登记日期? 不需要考虑。如果是按天查 语句应该是这样的. 可以用到索引,请不要使用convert,(会用不到索引)

select * from tb
where (createtime >=‘2014-4-10’ and createtime<‘2014-4-11’)

1、索引最好建立在重复性较多的列,datetime很明显重复性很少,建立索引有用吗? 通常很适合建索引 2、重复性较少的记录,如果建立索引,是否索引要耗去很多存储空间? 大部分情况下不会,重复性越小效率越高 3、如果SQL查询一般是按天来查,是否有必要新增一个date冗余列来存储 登记日期? 可以考虑,日期convert会导致原列上索引无效。 4、char(8),date,int都可以存储日期,char和int还有更好的移植性,是这样? 也不一定,数据类型是约束,除了保证数据的一致性之外,还可以带来很多优势,使用不合适的数据类型将丢失这些优势

山寨DBA 2014-04-10
准备用一datetime列存储 登记时间; 1、索引最好建立在重复性较多的列,datetime很明显重复性很少,建立索引有用吗?—如果你的查询中有用到时间列作为where条件的判断,当然是有必要建所以的了。 2、重复性较少的记录,如果建立索引,是否索引要耗去很多存储空间?—正常情况下,一个包含一列的非聚集索引,所占用的空间大约是表空间的20%–25% ,当然索引越多,肯定占用的空间也就越多了。 3、如果SQL查询一般是按天来查,是否有必要新增一个date冗余列来存储 登记日期? —有必要,其实如果是这样的话,你存储时间的列就直接为date呗,不过如果时间列有其他用处,多建一个冗余也可以。 4、char(8),date,int都可以存储日期,char和int还有更好的移植性,是这样?—关于移植性这个研究的不多,应该是影响不大的吧

参考网址:https://bbs.csdn.net/topics/390755882

另外,union时候如何走索引?
http://www.itpub.net/thread-1783503-1-1.html
最好搞单列索引

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值