SQL-4-Оптимизация (1)

Содержание

Слайд 2

Содержание

Что такое оптимизация и её типы
Оптимизация средствами БД
Оптимизация запросов
Средства анализа запросов
Примеры запросов

Содержание Что такое оптимизация и её типы Оптимизация средствами БД Оптимизация запросов

Слайд 3

Цели Лекции:
Рассмотреть основные методы повышения производительности запросов
Рассмотреть примеры правильного написания запросов
Познакомить со

Цели Лекции: Рассмотреть основные методы повышения производительности запросов Рассмотреть примеры правильного написания
средствами анализа запросов

Цель лекции

Слайд 4

Оптимизация

Что же такое оптимизация в глобальном смысле?

Оптимизация - процесс максимизации выгодных характеристик

Например:

Оптимизация Что же такое оптимизация в глобальном смысле? Оптимизация - процесс максимизации

Время выполнения работ
Затраты
Качество
И что то среднее («Оптимальное»)…

Слайд 5

Оптимизация

Классификация возможных видов оптимизации в БД:

- Средствами БД

- Запросов

Оптимизация Классификация возможных видов оптимизации в БД: - Средствами БД - Запросов

Слайд 6

Оптимизация средствами БД

Что можно сделать средствами БД?

1) Работа с индексами

Оптимизация средствами БД Что можно сделать средствами БД? 1) Работа с индексами

Слайд 7

Оптимизация средствами БД

Что можно сделать средствами БД?

2) Работа с кэшем

Оптимизация средствами БД Что можно сделать средствами БД? 2) Работа с кэшем

Слайд 8

Оптимизация средствами БД

Что можно сделать средствами БД?

3) Хинтинг Индексов

Оптимизация средствами БД Что можно сделать средствами БД? 3) Хинтинг Индексов

Слайд 9

Оптимизация средствами БД

Что можно сделать средствами БД?

4) Партиционирование таблиц (partitioning)

Оптимизация средствами БД Что можно сделать средствами БД? 4) Партиционирование таблиц (partitioning)

Слайд 10

Оптимизация средствами БД

Что можно сделать средствами БД?

5) Работа с Сессиями пользователей и

Оптимизация средствами БД Что можно сделать средствами БД? 5) Работа с Сессиями пользователей и Блокировкой таблиц
Блокировкой таблиц

Слайд 11

Оптимизация средствами БД

Что можно сделать средствами БД?

6) Дополнительные приятные мелочи

Грамотное использование ключей

Оптимизация средствами БД Что можно сделать средствами БД? 6) Дополнительные приятные мелочи
(ID)
Использование полей с типом NOT NULL
Использование фиксированной длины значений
А также все остальные логичные вещи…

Слайд 12

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

1) Стараемся НЕ использовать SELECT * …

Больше – Дольше ☺

Оптимизация запросов 1) Стараемся НЕ использовать SELECT * … Больше – Дольше ☺

Слайд 13

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

Попытка 1

Оптимизация запросов Попытка 1

Слайд 14

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

Попытка 2

Оптимизация запросов Попытка 2

Слайд 15

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

2) Используйте LIMIT если необходим НЕ полный список результатов

Оптимизация запросов 2) Используйте LIMIT если необходим НЕ полный список результатов

Слайд 16

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

3) Использование пользовательских переменных

+ Сохранение промежуточных значений
- Сложная переносимость на другие

Оптимизация запросов 3) Использование пользовательских переменных + Сохранение промежуточных значений - Сложная переносимость на другие языки
языки

Слайд 17

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

4) Количество и последовательность JOIN-ов

В какой последовательности будут выполнены JOIN-ы ?

Оптимизация запросов 4) Количество и последовательность JOIN-ов В какой последовательности будут выполнены JOIN-ы ?

Слайд 18

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

Последовательность JOIN-ов

Оптимизация запросов Последовательность JOIN-ов

Слайд 19

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

5) Старайтесь избегать большого числа запросов в циклах
(Особенно: UPDATE /

Оптимизация запросов 5) Старайтесь избегать большого числа запросов в циклах (Особенно: UPDATE / DELETE / INSERT)
DELETE / INSERT)

Слайд 20

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

6) Используйте EXISTS вместо IN при «Тяжелых» запросах 

Результат выполнения:
EXISTS намного быстрее, чем IN,

Оптимизация запросов 6) Используйте EXISTS вместо IN при «Тяжелых» запросах Результат выполнения:
когда результаты подзапроса очень велики.
IN быстрее, чем EXISTS, когда результаты суб-запроса очень малы.

Слайд 21

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

7) Использование временных таблиц  

Оптимизация запросов 7) Использование временных таблиц

Слайд 22

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

8) Обращайте внимание на ТИП ДАННЫХ, который используете для запросов. 

- Используйте

Оптимизация запросов 8) Обращайте внимание на ТИП ДАННЫХ, который используете для запросов.
ID
- Работайте меньше с Текстовыми значениями 

Слайд 23

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

Для Исследования собственного запроса можно использовать функцию EXPLAIN 

Оптимизация запросов Для Исследования собственного запроса можно использовать функцию EXPLAIN

Слайд 24

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

 Подробный анализ инструмента:
https://habr.com/post/211022/

Обращаем внимание:
- Type (Const / Index / All);
-

Оптимизация запросов Подробный анализ инструмента: https://habr.com/post/211022/ Обращаем внимание: - Type (Const /
Key / Possible_keys;
- Rows.

Слайд 25

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

 Подробный анализ инструмента:
https://goo.gl/UXPPTF

Профилирование запросов.

Команды:
SHOW PROFILE
SHOW PROFILES

set profiling=1;

show profiles;

show profile for

Оптимизация запросов Подробный анализ инструмента: https://goo.gl/UXPPTF Профилирование запросов. Команды: SHOW PROFILE SHOW
query 5;

Слайд 26

Примеры

Давайте выберем работников, которые были когда либо менеджерами отделов.

Примеры Давайте выберем работников, которые были когда либо менеджерами отделов.

Слайд 27

Примеры

Конструкция с IN

Примеры Конструкция с IN

Слайд 28

Примеры

Конструкция с JOIN

Примеры Конструкция с JOIN

Слайд 29

Примеры

Конструкция с …

Примеры Конструкция с …