美文网首页
Order By的坑

Order By的坑

作者: 就叫basi | 来源:发表于2019-11-14 15:17 被阅读0次

    场景:
    在使用orderby createtime按时间排序时,数据丢失。
    原因:
    有的作业时间是相同的
    MySQL对limit的解释是:
    如果多个行在列中具有相同的值ORDER BY,则服务器可以按任意顺序自由返回这些行,并且根据总体执行计划可能会有所不同。换句话说,这些行的排序顺序是非确定性的。即每次对于相同的值order by limit时,返回的行是不完全一致的,这样问题就出现了。
    根据这句话我们可以发现,在order by的值相同时,返回的顺序不一定一致。
    在MySQL 5.6版本,优化器在遇到order by xxx limit x,x 时,会做一个优化,使用优先队列,来进行排序,这样的好处在于在排序过程中,仅保留需要的n条数据即可。

    解决:
    order by后加一个唯一字段(id)进行排序

    换句话说凡是排序字段存在不唯一的情况,都需要加上按主键id列排序

    vans.png

    相关文章

      网友评论

          本文标题:Order By的坑

          本文链接:https://www.haomeiwen.com/subject/rcurictx.html