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字段值是一样的,突然恍然大悟,应该是因为时间值一样导致排序的时候顺序会出现随机变化。问题解决。

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

  • 相关阅读:
    机器学习项目流程(二)探索并可视化数据
    机器学习项目流程(一)初探数据集
    数据类型.md
    keepalived.md
    LVS.md
    tomcat多实例.md
    LANMP常用配置.md
    php-fpm配置参数.md
    Nginx学习.md
    Redis.md
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/12970449.html
Copyright © 2011-2022 走看看