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

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

  • 相关阅读:
    WPF 中使用 Resource 实现多语言
    webapi入门 如何调用
    webapi入门2
    webapi 入门
    asp.net web page 中如何添加引用
    几个Is函数
    webGrid内容格式化
    Validation
    HTML FORM
    访问数据库
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/12970449.html
Copyright © 2020-2023  润新知