Не можете да разчитате на реда на редовете във всяка заявка, която няма изричен ORDER BY
клауза. Ако направите заявка за подреден изглед, но не включите ORDER BY
клауза, бъдете приятно изненадани, ако са в правилния ред, и не очаквайте да се случи отново.
Това е така, защото оптимизаторът на заявки има свободен достъп до редове по различни начини в зависимост от заявката, статистиката на таблицата, броя на редовете, индексите и т.н. Ако знае, че заявката ви няма ORDER BY
клауза, можете свободно да игнорирате реда на реда, за да (кашляте) за по-бързо връщане на редове.
Малко извън темата. . .
Редът на сортиране не е непременно идентичен в различните платформи дори за добре познати съпоставки. Разбирам, че сортирането на UTF-8 в Mac OS X е особено странно. (Разработчиците на PostgreSQL го наричат счупен .) PostgreSQL разчита на strcoll(), което разбирам, че разчита на локалите на ОС.
Не ми е ясно как PostgreSQL 9.1 ще се справи с това. В 9.1 можете да имате множество индекси, всеки с различна колация . ORDER BY, който не указва сортиране, обикновено ще използва сортирането на колоните на базовата таблица, но какво ще направи оптимизаторът с индекс който указва различно сортиране от неиндексирана колона в основната таблица?