Недавно я обсуждал с коллегой, который настаивал на удалении предложений по предложениям из производственного запроса, потому что порядок по столбцам был таким же, как у первичного ключа .
После продолжительного обсуждения, в котором я пытался объяснить, что он не может гарантировать порядок на основе первичного ключа, был сделан окончательный вывод, что он не собирается настаивать на изменении запросов MSSQL.
Но он все еще собирался изменить запросы DB2.
Я не смог сразу найти статью, опровергающую, что DB2 упорядочивает запросы по первичному ключу, и в настоящее время я задаюсь вопросом, делает ли она это.
Итак, мой вопрос: как DB2 упорядочивает запрос, если нет порядка по предложению? Использует ли он первичный ключ?
Как вы можете гарантировать, что данные поступают в параллельной системе правильно, без оговорок?
Как было указано в ответе ypercube, при отсутствии
ORDER BY
предложения не существует определенного порядка .Я хотел бы добавить, что важно понимать, что SQL является в значительной степени абстракцией, он не определяет шаг за шагом, что должна делать СУБД, а скорее определяет ваши требования к конечному результату.
Это подразумевает, что если данные уже проверены таким образом, который обеспечивает правильный порядок, это так, потому что СУБД определила такую стратегию, и тогда она уже будет знать, что никакая дополнительная работа по сортировке не требуется для удовлетворения требований
ORDER BY
пункта ,С другой стороны, если вы не укажете, что порядок важен для вас (даже если это действительно так?), СУБД примет это во внимание, и если она найдет другую стратегию, более эффективную для поиска нужных данных в В каком-то другом заказе он воспользуется тем, что вам, видимо, плевать на заказ. (Выбранная стратегия также может со временем измениться, в зависимости от увеличения количества данных в соответствующих таблицах, исправлений программного обеспечения и т. Д.)
То есть, удаление
ORDER BY
предложения имеет очень небольшой потенциал роста (немного меньший размер запроса), но потенциально огромный недостаток, если порядок действительно важен. Особенно, так как это может очень хорошо работать с набором тестовых данных и пройти приемочное тестирование только для того, чтобы вызвать серьезные проблемы в будущем.источник