zoukankan      html  css  js  c++  java
  • pg数据库排序和limit同时使用遇到的奇怪问题

    这两天由于一位实习生同事回学校答辩,因此我来跟进他之前开发的功能进行测试,测试反馈上来这么一个问题:

    也就是说下面这两条sql查询出来的数据前10条的数据不一样。

    select * from table WHERE display_status = '1' order by update_time desc LIMIT 20;
    select * from table WHERE display_status = '1' order by update_time desc LIMIT 10;

    查看执行计划如下:

    可知,sql是先进行条件过滤,然后进行排序,最后进行limit,按此逻辑,limit 10和limit 20的前10条数据顺序应该是一模一样的,但根据结果来看顺序发生了变化,百思不得解。

    最后观察数据发现:

    很多数据的update_time字段值是一样的,突然恍然大悟,应该是因为时间值一样导致排序的时候顺序会出现随机变化。问题解决。

    以后再遇到排序问题,不要总想着是不是数据库内部原因,很有可能是数据的原因导致!!

  • 相关阅读:
    oracle对象之序列
    PLSql工具介绍
    oracle对象之同义词
    oracle对象之视图
    缓存问题汇总
    消息队列问题汇总
    算法-排序算法-1
    redis-主从数据一致
    数据结构与算法-完全二叉树/满二叉树
    写缓冲器与无效化队列
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/12970449.html
Copyright © 2011-2022 走看看