sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Order by in view garantiza el orden de selección?

No puede contar con el orden de las filas en ninguna consulta que no tenga un ORDER BY explícito cláusula. Si consulta una vista ordenada, pero no incluye un ORDER BY cláusula, sorpréndase gratamente si están en el orden correcto y no espere que vuelva a suceder.

Esto se debe a que el optimizador de consultas puede acceder libremente a las filas de diferentes maneras según la consulta, las estadísticas de la tabla, el recuento de filas, los índices, etc. Si sabe que su consulta no tiene un ORDER BY cláusula, es libre de ignorar el orden de las filas para (tos) devolver las filas más rápidamente.

Un poco fuera de tema. . .

El orden de clasificación no es necesariamente idéntico en todas las plataformas, incluso para intercalaciones conocidas. Entiendo que clasificar UTF-8 en Mac OS X es particularmente extraño. (Los desarrolladores de PostgreSQL lo llaman roto .) PostgreSQL se basa en strcoll(), que entiendo se basa en las configuraciones regionales del sistema operativo.

No me queda claro cómo PostgreSQL 9.1 manejará esto. En 9.1, puede tener varios índices, cada uno con una intercalación diferente . Un ORDER BY que no especifica una intercalación generalmente usará la intercalación de las columnas de la tabla base subyacente, pero ¿qué hará el optimizador con un índice? que especifica una intercalación diferente a una columna no indexada en la tabla base?