Происшествие с индексом Друзья, всем привет! 👋 С вами Костя Андронов. Сегодня разберём интересную ситуацию, которую я показывал на одной из практик курса «Оптимизация Oracle SQL». Есть табличка employee1, у неё есть индекс по колонке department_id. Пишем простой запрос: select ... from employee1 e where department_id = 11; Селективность этого предиката - 1,6% от общего количества строк в таблице. Помните правило: индекс обычно используется, когда выбирается менее 15% строк. В нашем случае 1,6% - прямо идеальные условия для применения индекса! ⚙️ Но если заглянуть в план выполнения, то видим неожиданное - Table Access Full 😱 Получается, индекс есть, но СУБД всё равно делает полный просмотр таблицы. Почему так происходит? 🤔 Кстати, отличный вопрос для собеседования 😉 Ответ кроется в нюансах оптимизатора Oracle, который иногда решает, что полное сканирование будет быстрее, чем обращение к индексу. Почему так - разберём в четверг 🎓 Пишите ваши гипотезы в чатик 💬 Всем проду