Ha egy SQL SELECT-ben megadom az ORDER BY zéradékot, akkor az eredmény sorrendje egyértelmű. Ha nem, akkor véletlenszerű. De:
Ha nem adtam meg az ORDER BY záradékot, akkor ez a véletlenszerű sorrend fix, azaz többször lefuttatva ugyanazt a sorrendet tartja?
Egyrészt azt várnám, hogy nem, mivel véletlenszerű lehet.
Másrészt azt várnám, hogy igen, mivel a végén lehet LIMIT, és ettől elvárom, hogy több darabban kérhessem le. Mellesleg úgy tűnik a PhpMyAdmin is ez utóbbi értelmezéssel használja.
- 1066 megtekintés
Hozzászólások
Limit mellett kötelező az order by hogy konstans legyen a sorrend. Egyébként PK szerint jön le az eredmény, de ez nem garantált.
Hirtelen megnő az adatmennyiség és a mysql úgy dönt hogy külső táron rendezi a join-okat és máris más lesz a sorrend. Elvi kérdés, használj order-t, még ha így lassabb is lesz.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
tl;dr nem
- A hozzászóláshoz be kell jelentkezni
Ahogy fentebb is irtak nem garantalt a sorrend, a Limit nem csinal sorbarendezest csak a megadott mennyiseg utan nem var tobb eredmenyt, ezaltal csokkentheto a futasido ha nem kell neked az osszes eredmeny es mellekes hozadekakent tobb darabban kerheted le.
De csak ha sorbarendezed lesz garantalt a sorrend es persze akkor se garantalt hogy ugyanaz mindig ha kozben van insert/update ami valtoztat a sorrenden.
- A hozzászóláshoz be kell jelentkezni
Ha nem adtam meg az ORDER BY záradékot, akkor ez a véletlenszerű sorrend fix, azaz többször lefuttatva ugyanazt a sorrendet tartja?
Én úgy tanultam, hogy nem definiált a sorrend. Nem véletlenszerű, egyszerűen nem garantált.
Lehet, hogy egy adott gépen futtatva mindig ugyanaz lesz. De nem garantált.
Egy másik gépen meg simán lehet teljesen más is.
- A hozzászóláshoz be kell jelentkezni