Выражения ordered и unordered
Выражение ordered устанавливает режим упорядочивания для своего выражения-аргумента. Выражение unordered устанавливает режим неупорядочивания для своего выражения-аргумента.
Путевые выражения, включающие операцию "/" или "//", или шаг; выражения над множествами (union, intersect и except), а также FLWOR-выражения без раздела order by являются чувствительными к режиму упорядочивания. Если требуется упорядочивание, то каждое из этих выражений производит последовательность элементов в порядке документа. Если упорядочивание не требуется, то порядок элементов этой последовательности является произвольным. Ослабление порядка элементов может позволить оптимизатору выбрать более дешевую стратегию выполнения запроса.
Исходный режим упорядочивания может устанавливаться в прологе запроса. Если он не установлен, то по умолчанию требуется упорядочивание. Следующий запрос возвращает последовательность служащих в произвольном порядке, но во внутреннем путевом выражении используется упорядочивание для выбора служащих с должностью "VP" (вице-президент). declare ordering unordered; for $e in ordered { //employee[titles/title[last()] = 'VP'] } where $e[location/@state='NY'] return $e