Может быть, кто-то может объяснить мне это, но при запросе таблицы данных из Oracle, где существует несколько записей для ключа (скажем, идентификатора клиента), запись, которая появляется первой для этого клиента, может отличаться, если не существует неявного " оператор order by, обеспечивающий порядок, скажем, альтернативного поля, такого как тип транзакции. Таким образом, выполнение одного и того же запроса к одной и той же таблице может привести к другому порядку записи, чем 10 минут назад.
Например, один прогон может дать:
Cust_ID, Transaction_Type
123 А
123 B
Если не используется предложение "order by Transaction_Type", Oracle может произвольно вернуть следующий результат при следующем запуске запроса:
Cust_ID, Transaction_Type
123 B
123 A
Полагаю, у меня сложилось впечатление, что в Oracle был порядок строк в базе данных по умолчанию, который (возможно) отражал физический порядок на диске. Другими словами, произвольный порядок, который является неизменным и гарантирует тот же результат при повторном выполнении запроса.
Это имеет отношение к оптимизатору и как он решает, где наиболее эффективно извлекать данные?
Конечно, лучшая практика с точки зрения программирования - форсировать любой требуемый порядок, я был немного обеспокоен этим поведением.