Здравый смысл говорит о том, что order by во view просто не имеет  смысла (ни 
здравого, ни какого другого ;)

Я тебе объясняю. У меня все строковые данные в кодировке None лежат по определённым причинам. Есть куча строковых полей в разных таблицах, смысл которых хранить названия чего-то. Под эти названия обычно отводится 250 или 1000 символов. Названия везде при отображении надо сортировать. Для быстрой сортировки я сделал индекс по выражению, но, как показала практика писать это громоздкое выражение во-первых не удобно, а во вторых часто кто-то ошибался и писал вместо ORDER BY CAST(SUBSTRING(UPPER("Name") FROM 1 FOR 50) AS VARCHAR(50)) просто ORDER BY "Name" или вобще забывал об ORDER BY. Поэтому мне было крайне удобно впихнуть это выражение в запрос представления и больше не вспоминать о такой проблеме как неправильная или отсутсвующая сортировка. Как по мне это имеет здравый смысл и очень удобно.


Более того - он вносит неоднозначность в выполнение запроса над view, если в 
запросе есть своя сортировка\группировка.

Мне показалось что если в запросе есть своя сортировка по полям представления, то сортировка запроса представления игнорируется. По-моему если это прописать в документации, то всё вполне однозначно.

Ответить