`
atian25
  • 浏览: 462234 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

请教个索引的问题

阅读更多

请教个索引的问题:
(sybase,其他db也聊聊)

一个大的结果表(按时间增量插入数据,无修改/删除),有个finishTime字段表示任务结果的生成时间, 取值为datetime,精确到秒.
查询的时候一般都是找一段时间的数据来分析, 譬如前7天. where finishTime between '2010-07-02 00:00:00' and '2010-07-09 00:00:00'

问题:
1.如果用finishTime来做聚集索引, 这种查询速度怎么样?
2.如果增加一个字段statTime , int型, 取值依赖于finishTime, 譬如finishtime为2010-07-09 10:32:04 则stattime为2010070910这样一个int值, 用这个statTime来做聚集索引,查询速度较finishTime会有提升吗? 还是这种作法没有意义?
where statTime between 2010070200 and 2010070900

 

 

ps:时间聚集索引的意义我还是知道的,有数据库调优的基础,只是想知道时间精确到秒后是否会影响

分享到:
评论
1 楼 liushuiboy 2010-11-30  
对于sybase 不很了解
但是不管采用什么dbms,对于这个场景来讲 ,只要让数据在物理上的存储顺序与其插入的顺序一致,就可以提高这个查询的性能

对于Oracle 来讲,如果只有finishTime 的查找,可以以finishTime做主键(做不了就再加一个字段,finishTime是第一个),搞一个IOT表,减少索引的代价
mysql的innodb引擎 也是一样的

加一个 stattime 为2010070910,对oracle 来讲 是毫无意义的,而且有这种日期格式 对于优化器对日期类型分析 带来很大困难,可以说是得不偿失

相关推荐

Global site tag (gtag.js) - Google Analytics