Не, на това поведение не може да се разчита. Редът се определя от начина, по който плановникът на заявки е решил да изгради набора от резултати. прости заявки като select * from foo_table
вероятно ще бъдат върнати в реда, в който са съхранени на диска, който може да бъде в ред на първичен ключ или в реда, в който са създадени, или друг произволен ред. по-сложни заявки, като select * from foo where bar < 10
вместо това може да бъде върнат в ред на различна колона, въз основа на прочетено индексиране, или по реда на таблицата, за сканиране на таблица. още по-сложни заявки, с множество where
условия, group by
клаузи, union
s, ще бъде в какъвто и ред, който планиращият реши, че е най-ефективен за генериране.
Редът може дори да се промени между две идентични заявки само поради данни, които са се променили между тези заявки. клауза „където“ може да бъде удовлетворена при сканиране на индекс в една заявка, но по-късните вмъквания биха могли да направят това условие по-малко селективно и планиращият може да реши да изпълни последваща заявка с помощта на сканиране на таблица.
За да постави по-фина точка върху него. RDBMS системите имат мандат да ви дадат точно това, което поискахте, възможно най-ефективно. Тази ефективност може да приеме много форми, включително минимизиране на IO (както към диска, така и през мрежата за изпращане на данни до вас), минимизиране на CPU и поддържане на малкия размер на работния му набор (използвайки методи, които изискват минимално временно съхранение).
без ORDER BY
клауза, няма да сте попитали точно за определен ред и така RDBMS ще ви даде тези редове в някакъв ред, който (може би) съответства на някакъв случаен аспект на заявката, въз основа на кой алгоритъм RDBMS очаква да произведе данните най-бързо.
Ако ви е грижа за ефективността, но не и за поръчката, пропуснете ORDER BY
клауза. Ако ви е грижа за реда, но не и за ефективността, използвайте ORDER BY
клауза.
Тъй като всъщност ви е грижа за ДВЕТЕ използвайте ORDER BY
и след това внимателно настройте вашата заявка и база данни, така че да са ефективни.