gabordemooij / redbean

ORM layer that creates models, config and database on the fly
https://www.redbeanphp.com
2.3k stars 279 forks source link

Does RedBeanPHP suffer of the problem of useless order by on some ORM prefetches ? #941

Closed LLyaudet closed 4 months ago

LLyaudet commented 4 months ago

Hello,

Recently I found a problem with Django and submitted a patch in a PR: https://code.djangoproject.com/ticket/35309 https://github.com/django/django/pull/17984 I also developped a work-around for old versions of Django: https://github.com/LLyaudet/django-monkey-patches/blob/main/src/django_monkey_patches/django__orm__prefetch_without_useless_order_by.py

I don't know yet RedBeanPHP details. The idea is just that some models can have a default ordering (I assume this functionality is present in RedBeanPHP also). And that some ORM may still add this ordering in the SQL query whilst it is not needed because only a single object will be prefetched per instance of the original result set. On very big prefetches I noticed a gain of 10 - 15 %, since the rest of the DB query is mainly an index scan.

ClimateChangeBrake

Can someone please dump the queries of such prefetches and see if the bug is present in RedBeanPHP ? If so submitting a PR should not be too hard. I will try to help. But right now, I start by warning the frameworks/ORM I am aware of :)

Best regards, Laurent Lyaudet

Lynesth commented 4 months ago

I thought a long time whether I should comment on this and how I should do it, but I'll end up making it simple:

Feel free to test stuff and if you find something, make an issue about it (or update this one I guess).

gabordemooij commented 4 months ago

RedBeanPHP doesn't use a default order. It works totally different from other ORMs. However, like @Lynesth says, feel free to test.

LLyaudet commented 4 months ago

Hello :) Thanks for your answers. I took a deeper look at the documentation of RedBeanPHP, and indeed I see no way to reproduce the bug in RedBeanPHP. Best regards, Laurent Lyaudet