К основному контенту

Оптимизация запросов Oracle DB

Коротенький пост, который может начинающим помочь в том, куда копать для оптимизации SQL запросов Oracle.

Итак первое, прежде чем изучать трюки или ещё как-то извращаться с SQL, нужно знать, а для знающих не забывать, что при обычном SELECT с множественным условием, Oracle работает по схеме short-circuit. Это означает, что порядок условий должен быть наиболее оптимальным, так как Oracle при отсутствии необходимости выполнять следующие условия, может отработать только на первых - то есть какую-то часть сравнений вовсе опустить, если они не нужны. К примеру, вы хотите выбрать из таблицы записи в промежутке между датами и при этом отфильтровать их по нулевому полю:

SELECT * FROM Table t WHERE t.SomeField not null

            AND t.StartDate between SomeDate1 and SomeDate1+0.999999

Данный запрос нужно выполнить и посмотреть не будет ли он эффективнее, если сначала поставить условие выбора даты. Таким образом, Oracle сразу отфильтрует эти записи (причем часто, большую часть), и второе условие будет "проходить" по меньшему их количеству, а не по всем. Прирост скорости может быть ощутим.

Второе базовое знание, необходимое для оптимизации запросов. В этом очень помогает План запроса. Многие утилиты позволяют просмотреть такой план, например Oracl SQL Developer. Выполняете запрос, потом жмёте кнопочку "Explain plan" и смотрите, какое условие сколько раз выполнялось. К примеру, на поля условий, по которым "идёт" FULL проход, необходимо обязательно поставить INDEX. Без индексов в Базе Данных вообще, жизнь - не жизнь.

Комментарии

Популярные сообщения из этого блога

Делаем себе бесплатный VPN на Amazon EC2

Читать этот пост в Telegraph. Другие посты в канале в Telegram. Кто только не расписывал уже пошаговые инструкции по этой теме. Однако, время идёт, ПО меняется, инструкции нуждаются в обновлении, а люди в современной России всё больше нуждаются в применении VPN. Я собираюсь описать все шаги для создания бесплатного сервера на Amazon EC2 с операционной системой Linux и необходимые команды для настройки VPN сервера на нём. Чтобы не повторяться о деталях, которые были много раз описаны на русскоязычных и англоязычных ресурсах, по ходу статьи я просто приведу целую кипу ссылок, где можно почерпнуть необходимую информацию, а где информация устарела - опишу подробнее что нужно сдеать. В итоге, сервер будет доступен для вас из любой точки планеты, с любой операционной системы, и бесплатно (с определёнными ограничениями по трафику). Шаг первый - Регистрируемся на Amazon AWS Нужно зайти на сайт https://aws.amazon.com/ru и сразу перейти к Регистрации, нажав одноимённую кнопку. При р

В помощь программисту: инструкции по работе с Ubuntu сервером

Программистам чаще приходится писать код и заботиться о его чистоте, правильных абстракциях в коде, корректных зависимостях и прочих сложностях профессии. При этом, настройка и обслуживание серверов, хоть и связанная область - это отдельный навык, необходимый не каждому, и помнить о котором в деталях сложно. Поэтому, я делаю ряд микро-инструкций, которыми буду пользоваться и сам, когда необходимо. Это не статьи, а пошаговые помощники, которые я буду дополнять и наполнять по мере надобности. Делаем бесплатный VPN на Amazon EC2 Создание ключей SSH Подключение к серверу через SSH Передача файла с Linux сервера наWindows машину Делаем VPN сервер на Ubuntu 20.04 используя OpenVPN и EasyRSA  Отображение GUI с Linux сервера на Windows машине

Выбираем все плюсы из трех парадигм Entity Framework

Между парадигмами разработки с Entity Framework (Code First, Model First, Database First) я выбрал промежуточную, потому что ни одна меня не устраивала полностью. В Code First меня радуют чистые POCO классы, но не устраивает невозможность моделирования базы. В Database First и Model First мне не нравится генерация EDMX и другого всего лишнего. Таким образом, я нашел для себя такое решение: 1. Я моделирую схему в любой удобной программе (тут любая внешняя программа моделирования, генерирующая SQL Server-совместимые скрипты генерации базы) Рис. Смоделированная схема БД. 2. Создаю базу в SQL Management Studio 3. Делаю Reverse Engineering базы в POCO классы (как в Code First) с помощью плагина Entity Framework Power Tools Рис. Установленный плагин для Reverse Engineer. Рис. Вот так делается Reverse Engineer базы данных в POCO классы. Рис. Результат генерации POCO классов на основе базы данных: папочка Models с готовым контекстом, классами объектов и маппинг-классами.