大家好,我的一个项目中使用字符串“2010-04-14 08:54:00”存储时间,在千万数据级别的查询时候,用来以时间作为sql的where限制时候,速度很不理想,尤其是比较日期的时候还要substring(datetime,1,10)='2010-04-14';速度更加不理想。现在想用long类型的unixtime来存储时间,请问会遇到什么问题?
  另外,我上面说的使用string效率能否提高呢?

解决方案 »

  1.   

    首先,你的time字段是不是加了索引。另外,sql中千万不要在where子句里使用函数,这是大忌,最好把sql贴出来看看。
    我觉得用long存储问题不大,代码层面多一个转换而已。
    其实使用timestamp性能上应该没有太大问题,关键看你的sql
      

  2.   

    用long不错,比string的比对更加简单。
      

  3.   

    select count(*) from tj_itemresult where substring(tjtime,1,10)='2010-04-13' and itemid=15 and df<>1 and resulttype<>1;时间没加索引,存储内容是2010-04-14 08:54:00,但是查询时需要以日期为单位2010-04-13。所以where用了函数substring。大家有什么优化建议呢?