Расчет времени запроса в SQL - PullRequest
0 голосов
/ 11 июня 2018

У меня есть SQL-запрос в формате дерева (A⨝B) ⨝ (C⨝D) ⨝ (E⨝F) ⨝ (G⨝H) ⨝ (I⨝J), содержащий различные объединения. Я хочу знатьто есть есть какой-либо метод, в котором мы можем найти время для каждой операции соединения отдельно, например, сколько времени может занять подвыражение (A⨝B).Или (C⨝D) можно взять.вместо целого выражения.Или как мы можем найти время только для подвыражения (A⨝B) ⨝ (C⨝D).Я преобразовал свой SQL-запрос в дерево с использованием языка Java.Заранее спасибо.

1 Ответ

0 голосов
/ 11 июня 2018

Ответ на ваш вопрос - просто запустите все возможные комбинации и измерьте их.Зачем?Читайте дальше.

Базы данных очень сложны для выполнения запросов.Некоторые из них направлены на то, чтобы дать вам первые подходящие записи (например, для веб-страниц);другие относятся ко всему набору результатов, полностью пропуская индексы и вместо этого читая страницы диска (оптимальный путь).

Другой подход заключается в получении COST оператора SQL.В целом, используя EXPLAIN PLAN < my_select >, вы получите подробную информацию о стоимости плана.Не время выполнения, а относительная стоимость.Стоимость не имеет никакого значения вне базы данных, но помогает оптимизатору SQL решить, какой план выполнения кажется лучшим.

Кроме того, кэширование базы данных играет огромную роль.Во второй раз, когда вы запускаете запрос, он может выполняться намного быстрее, чем в первый раз, поскольку база данных (или ОС) все еще имеет все страницы диска в памяти.

Наконец, индексы могут значительно ускорить запросы.Вы заметите (большую) разницу в скорости запросов, если у вас будут созданы правильные, по сравнению с отсутствием ни одного из них.

Короче говоря, вам нужно измерить их и посмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...