Oracle Private Temporary Table (приватные временные таблицы) за 8 минут
Происшествие с индексом
Происшествие с индексом. Ответ Друзья, всем привет! 👋 С вами Костя Андронов 🙂 В понедельник мы опубликовали пост с интересной ситуацией, которую я показывал на одной из практик курса «Оптимизация Oracle SQL». Несмотря на идеальные условия для применения индекса (селективность предиката — всего 1,6%), Oracle выбирает Table Access Full вместо Index Range Scan 😱 Разбираемся, почему это произошло. 📌 Как Oracle выбирает метод доступа к данным? На этапе hard-parse оптимизатор строит планы с разными методами доступа и оценивает их «стоимость» для конкретного запроса. Получается, он решил, что обойти всю таблицу «дешевле», чем использовать индекс...
Получение плана выполнения запроса с помощью EXPLAIN PLAN
Любой запрос, даже без условия во WHERE и без джоинов с таблицами, будет выполняться по какому-то плану. СУБД (например, ORACLE или MS SQL Server) может оценить запрос до его выполнения, то есть то, как он будет выполнен и дать примерную оценку своих трудозатрат на каждый этап действий (сколько примерно данных с жёсткого диска будет прочитано, сколько нужно процессорных ресурсов для просчёта чего-либо или для расстановки данных в нужном порядке и т.д). В разных программах работы с базами данных получение плана запроса может быть более удобным чем в других программах...