V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
HashV2
V2EX  ›  Python

postgre 排序问题

  •  
  •   HashV2 · 2020-09-16 15:01:36 +08:00 · 1386 次点击
    这是一个创建于 1528 天前的主题,其中的信息可能已经有所发展或是发生改变。

    django 站点

    使用 Orderingfilter 和 PageNumberPagination 做排序和分页

    之前使用 mysql 一切 ok, 但是从 mysql 迁移到 postgresql 之后发现了一个诡异的问题

    当我在某页对某一条数据进行操作,操作会改变这条数据的状态字段(但并未使用状态字段进行排序)

    操作完成后刷新页面,发现当前页的数据发生了变化,升级的那条数据不见了

    这搞得我没法在一个页面展示一组稳定数据

    再次强调,在 mysql 上的时候没有此问题

    可能跟这个有点像 https://www.v2ex.com/t/663098

    6 条回复    2020-09-17 16:58:01 +08:00
    HashV2
        1
    HashV2  
    OP
       2020-09-16 15:08:15 +08:00
    django 社区一直强推 postgres

    本来使用的 mysql,有一些数组和 json 字段用 mysql 的 textfield 存 感觉没有 postgres 来的爽 就做了一次迁移

    刚迁移过来的时候也做了测试 但是没测的很详细

    结果用了一个多星期开发的都差不多了, 给我整这么一出幺蛾子 心态爆炸 这两天如果解决不了估计要再迁移回 mysql 了

    心态爆炸~~
    xiaolinjia
        2
    xiaolinjia  
       2020-09-16 15:32:06 +08:00
    是不是 orm 用了 values 或者 distinct 之类的?
    HashV2
        3
    HashV2  
    OP
       2020-09-16 15:35:49 +08:00
    已经解决 匿了
    neoblackcap
        4
    neoblackcap  
       2020-09-16 21:03:10 +08:00
    假如你说的是你引用的那个情况,那么我可以告诉你,pg 的实现才是对的,引入了 window 函数。mysql 那种就是扯淡实现,一般出现在瞎用 order by 的情况下。SQL 严谨一点的 pg,你压根就不能实现查询。mysql 居然随机给你一个结果。
    HashV2
        5
    HashV2  
    OP
       2020-09-17 11:08:11 +08:00
    @neoblackcap 是这样的 一个表内假设有 fields1 -fields5 字段
    我使用 fields1 和 fields2 做排序的条件
    在排序条件不变的情况下 update 一条数据的 fields3 字段
    再次执行查询后 mysql 中和之前查询的结果是相同的 但是 pg 的查询结果就变了
    我只能在所有的查询 order by 中额外添加 id 排序
    还好有个自增的 id 字段 如果是 uuid 的话这种查询会不会影响查询性能?
    neoblackcap
        6
    neoblackcap  
       2020-09-17 16:58:01 +08:00
    @HashV2 你的 field1, field2 有 null 值么?要你指定的哦,只是 order by 是不应该出现你说的情况的。如果可以的话,你发一下 SQL

    另外 uuid 类型一般是有优化的,不会造成很大的影响。记得不要存成字符型就可以了,存成字符型就没救
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2916 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:02 · PVG 11:02 · LAX 19:02 · JFK 22:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.