1 месяц назад
Друзья, всем привет
! 👋 На связи Паша, ваш куратор и специалист в мире Oracle. Сегодня хочу разобрать тему, которая часто всплывает и на собеседованиях, и в реальной жизни — INDEX FULL SCAN vs INDEX FAST FULL SCAN. Итак, поехали 🚀 🔍 INDEX FULL SCAN Это классика: Oracle проходит индекс от корня до листьев и читает его последовательно и целиком. Особенности: • одноблочное чтение; • данные возвращаются отсортированными; • используем индекс как упорядоченный источник данных. Плюсы: уходим от сортировки. Минусы: работает медленнее из-за одноблочного последовательного чтения...
4875 читали · 3 года назад
Использование хинтов в SQL запросах
Выполняя любую команду SQL, каждая СУБД старается выполнить её максимально эффективно. В каждой СУБД есть «оптимизатор», то есть механизм, принимающий решение как команда будет выполнена максимально эффективным образом. Строится план. Мы можем влиять на план выполнения запроса с помощью подсказок (хинтов), оставляя их прямо в SQL-коде. Если на одной из таблиц, участвующих в SQL-запросе есть индекс для какого-то столбца, значения которого используются во WHERE или в ON, то не обязательно, что он будет...
1 год назад
Медленные индексы
Несмотря на эффективность обхода дерева, существуют случаи, когда поиск по индексу работает не так быстро, как ожидалось. Это противоречие долгое время подпитывало миф о дегенерированном индексе. Миф утверждает, что перестроение индекса является чудодейственным решением. Стоит принять как данность, что перестроение индекса не улучшает производительность в долгосрочной перспективе. Истинная причина медленной работы простых запросов — даже при использовании индекса — может быть объяснена простыми вещами...
7 месяцев назад
Зачем нужен Index Skip Scan? Продолжение
Зачем нужен Index Skip Scan? Продолжение Друзья, всем привет! 👋 С вами Костя Андронов 🙂 В понедельник мы опубликовали вопрос про Index Skip Scan от одного из наших студентов с 6 потока по оптимизации Что такое Index Skip Scan?🤔 Это один из методов доступа к данным через индекс. Обычно он используется, когда в таблице есть составной индекс, но в предикатах запроса отсутствуют лидирующие колонки. Рассмотрим на примере. Пусть у нас есть таблица employees и индекс: create index emp_name_ix on employees(last_name, first_name) Как выглядят листовые блоки этого индекса? В них хранятся все пары last_name, first_name в отсортированном виде, и для каждой — rowid строки...