Query Optimization: драматическое влияние замены подразделений с помощью соединений
] недавнее рефакторирование приложения значительно улучшило производительность, заменив подпрограмму внутренним соединением. Оригинальный код использовал подзадность в , где
clause:
WHERE id IN (SELECT id FROM ...)
]
изменение привело к потрясающему 100 -кратному ускорению, снизив время выполнения с 50 секунд до 0,3 секунды. Возникает вопрос: почему такая огромная разница?
] Ключ заключается в понимании поведения под подразделением. Коррелированная подразделение, где предложение Subquery , где
зависит от значений Внешнего запроса, неоднократно выступает для каждой строки во внешнем запросе. Это повторное выполнение чрезвычайно неэффективно. Напротив, некоррелированная подразделение выполняется только один раз.
исходный подзадность была коррелирована. Для каждой обработанной строки база данных должна была выполнить подбору, что приводило к многочисленным поискам.
] замену подзадна на внутреннее соединение позволило эффективно использовать базу данных. Условие соединения (например, submission_id = st_tag_id
) разрешено для одного индексированного поиска в соответствии с квалификационной строкой. Этот радикально уменьшенный доступ к базе данных, объясняя скачок производительности.
урок? Тщательное рассмотрение подразделений по сравнению с объединением имеет жизненно важное значение для оптимизации запросов SQL. Понимание коррелированных и некоррелированных подразделений и их последствий для эффективности, дает возможность разработчикам писать значительно быстрее и более эффективные запросы базы данных.
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3