Объяснение
После того как определен запрос, имеющий наибольшую стоимость, на следующем шаге выясняют, почему он выполняется медленно. В каждой базе данных применяется оптимизатор с целью выбора индексов для запроса. Можно заставить базу данных выводить отчет по ее анализу, называемый планом выполнения запроса (QEP — query execution plan). Если вы частый пользователь фейсбука то вам может потребоваться http://supreme2.ru/instapc/ подробнее узнать о котором можно тут.
Синтаксис запроса QEP варьируется в зависимости от модели базы данных:
Модель базы данных Решение по генерированию отчета QEP
IBM DB2 EXPLAIN, команда db2expln или Visual Explain
Microsoft SQL Server SET SHOWPLAN_XML, или Display Execution Plan
MySQL EXPLAIN
Oracle EXPLAIN PLAN
PostgreSQL EXPLAIN
SQLite EXPLAIN
He существует стандарта, определяющего, какие сведения должны содержаться в отчете QEP и формат отчета. В общем случае в QEP показывается, какие таблицы задействованы в запросе, способ использования индексов оптимизатором и порядок, в котором осуществляется доступ к таблицам. Отчет может также содержать статистические данные, такие как количество строк, генерируемых на каждом этапе запроса.
Давайте взглянем на пример SQL-запроса и запроса отчета QEP:
Файл npnMepa-.Jndex-Shotgun/soln/explain.sql
EXPLAIN SELECT Bugs.* FROM Bugs
JOIN (BugsProducts JOIN Products USING (product_id)) USING (bug_id)
WHERE summary LIKE '%crash%'
AND product_name = 'Open RoundFile'
ORDER BY date_reported DESC;
В QEP-отчете MySQL, приведенном на рис. 13.1, столбец key показывает, что данным запросом используется только таблица BugsProducts, индекс первичного ключа. Кроме того, дополнительные примечания в последнем столбце показывают, что запросом сортируются результаты во временной таблице без использования преимуществ индекса.
Оператором LIKE принудительно выполняется полное сканирование таблицы в Bugs, а по Products .product_name отсутствует индекс. Данный запрос можно улучшить, если создать новый индекс по productname, а также использовать решение по полнотекстовому поиску1.
Сведения в QEP-отчете варьируются в зависимости от поставщика базы данных. В данном примере следует прочитать страницу руководства по MySQL, «Optimizing Queries with EXPLAIN*, чтобы разобраться, как интерпретировать сведения отчета2.
Опубликовал vovan666
July 19 2013 07:03:40 ·
0 Комментариев ·
3883 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.