java成长路漫漫

mysql5.6 按时间排序问题

2018-03-29  本文已影响0人  WillM

使用javax.persistence下的@CreatedDate生成创建时间,使用HikariCP连接池进行mysql(v5.6)数据库存储,时间戳如下:

实体对应的时间戳

用mysql根据时间倒序查询结果如下:

时间倒序查询结果

莫名的没有没有规则可循.经过咨询可能是mysql根据分区进行优先排序导致的问题,因为mysql的datetime类型只精确到秒,所以时间戳毫无用武之地.

已增加字段来排序,暂未找到好的结果方法,有好的解决方法望留言告知,tks

<--------------------------------<--------------------------------<--------------------------------

原因: sql执行顺序为 form… where… select… order by… limit…,在完成select之后,所有记录是以堆排序的方法排列的,在进行order by时,仅把view_count值大的往前移动,所以结果是随机的.

这是5.6版本针对5.5的优化,也出现了隐藏bug.同时该优化可能会导致 limit+order by的组合会出现不同页相同数据的问题

解决方法:在字段添加上索引,索引是有序的且持久的.暂未确定最新版本是否有相同问题.

上一篇下一篇

猜你喜欢

热点阅读