Похожие презентации:
SQL. Оптимизация запросов
1.
SQLОптимизация запросов
2.
Содержание1)
2)
3)
4)
5)
Что такое оптимизация и её типы
Оптимизация средствами БД
Оптимизация запросов
Средства анализа запросов
Примеры запросов
3.
Цель лекцииЦели Лекции:
• Рассмотреть основные методы повышения
производительности запросов
• Рассмотреть примеры правильного написания запросов
• Познакомить со средствами анализа запросов
4.
ОптимизацияЧто же такое оптимизация в глобальном смысле?
Оптимизация - процесс максимизации выгодных характеристик
Например:
- Время выполнения работ
- Затраты
- Качество
- И что то среднее («Оптимальное»)…
5.
ОптимизацияКлассификация возможных видов оптимизации в БД:
- Средствами БД
- Запросов
6.
Оптимизация средствами БДЧто можно сделать средствами БД?
1) Работа с индексами
7.
Оптимизация средствами БДЧто можно сделать средствами БД?
2) Работа с кэшем
8.
Оптимизация средствами БДЧто можно сделать средствами БД?
3) Хинтинг Индексов
9.
Оптимизация средствами БДЧто можно сделать средствами БД?
4) Партиционирование таблиц (partitioning)
10.
Оптимизация средствами БДЧто можно сделать средствами БД?
5) Работа с Сессиями пользователей и Блокировкой таблиц
11.
Оптимизация средствами БДЧто можно сделать средствами БД?
6) Дополнительные приятные мелочи
- Грамотное использование ключей (ID)
- Использование полей с типом NOT NULL
- Использование фиксированной длины значений
- А также все остальные логичные вещи…
12.
Оптимизация запросов1) Стараемся НЕ использовать SELECT * …
Больше – Дольше
13.
Оптимизация запросовПопытка 1
14.
Оптимизация запросовПопытка 2
15.
Оптимизация запросов2) Используйте LIMIT если необходим НЕ полный список результатов
16.
Оптимизация запросов3) Использование пользовательских переменных
+ Сохранение промежуточных значений
- Сложная переносимость на другие языки
17.
Оптимизация запросов4) Количество и последовательность JOIN-ов
В какой последовательности будут выполнены JOIN-ы ?
18.
Оптимизация запросовПоследовательность JOIN-ов
19.
Оптимизация запросов5) Старайтесь избегать большого числа запросов в циклах
(Особенно: UPDATE / DELETE / INSERT)
20.
Оптимизация запросов6) Используйте EXISTS вместо IN при «Тяжелых» запросах
Результат выполнения:
EXISTS намного быстрее, чем IN, когда результаты подзапроса
очень велики.
IN быстрее, чем EXISTS, когда результаты суб-запроса очень
малы.
21.
Оптимизация запросов7) Использование временных таблиц
22.
Оптимизация запросов8) Обращайте внимание на ТИП ДАННЫХ, который используете для
запросов.
- Используйте ID
- Работайте меньше с Текстовыми значениями
23.
Оптимизация запросовДля Исследования собственного запроса можно использовать
функцию EXPLAIN
24.
Оптимизация запросовОбращаем внимание:
- Type (Const / Index / All);
- Key / Possible_keys;
- Rows.
Подробный анализ инструмента:
https://habr.com/post/211022/
25.
Оптимизация запросовПрофилирование запросов.
Команды:
SHOW PROFILE
SHOW PROFILES
set profiling=1;
show profiles;
show profile for query 5;
Подробный анализ инструмента:
https://goo.gl/UXPPTF
26.
ПримерыДавайте выберем работников, которые
были когда либо менеджерами отделов.
27.
ПримерыКонструкция с IN
28.
ПримерыКонструкция с JOIN
29.
ПримерыКонструкция с …