SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
#backendmeetup
Качаем ловкость
MySQL
Sergey White
VEZETVSEM
MySQL vs PL/SQL ORACLE in me...
● Отладчик
● Использование hints
● Шикарный оптимизатор SQL, PL/SQL кода
● Использование JOB’S
● Восстановление данных из временных логических таблиц
● Сама архитектура Oracle
● Миллион и маленькая тележка функций, процедур
● Привычный ООП подход к написанию кода.
VEZETVSEM
О чём поговорим:
● Индексы MySQL
● Совет по написанию SQL кода в MySQL.
● SQL Tricks or how to make index
● Как используются индексы в 90% случаях
VEZETVSEM
Индексы
● BTREE
● RTREE
● Hash Index
● FullText MyISAM, InnoDB from 5.6
VEZETVSEM
MyISAM vs InnoDB
● Кластер: Нет
● Блокировка на уровне таблицы WTF?!?!
● Полнотекстовый поиск: ДА
● Внешние ключи: НЕТ
● Все индексы одинаковы
● Кластер: ДА
● Блокировка на уровне row
● Полнотекстовый поиск: НЕТ
● Внешние ключи: ДА
● Pimary key - особенный
MyISAM InnoDB
VEZETVSEM
Добби InnoDB for BTREE indexes
● Find all rows with key = 5(point lookup)
● Find all rows with key > 5(open range)
● Find all rows with 5 < key < 10(close range)
● Not find rows with last digit of the key is Zero
VEZETVSEM
Strings
● “AAAA” < “AAAB”
● LIKE “ABC%” =
ABC[low] < key < ABC[high]
● LIKE “%ABC”
VEZETVSEM
Для чего MySQL использует index
● Поиск
● Сортировка
● Избежание повторного чтения данных
VEZETVSEM
Search
● Select * from EMPLOYES WHERE LAST_NAME = “IVANOV”
key(LAST_NAME)
● Select * from EMPLOYES WHERE LAST_NAME = “IVANOV” AND
DEPT = “DEV”
key(LAST_NAME,DEPT)
VEZETVSEM
Multiple Index tricks
● Index(A,B,C) порядок имеет значение
● Полное использование индекса
○ A = 5
○ A = 5 AND B > 5
○ A = 5 AND B =6 AND C = 7
○ A = 5 AND B in (3,4) AND C > 7
● Не будет использоваться индекс
○ B > 6
○ B = 6 AND C > 7
● Используется только часть индекса
○ A > 5 AND B = 6
○ A = 5 AND B > 6 AND C = 7
VEZETVSEM
Основное правило
1. Уважай первую колонку
2. Остерегайся range…..
VEZETVSEM
Сортировка
1. SELECT * FROM PLAYERS ORDER BY SCORES DESC LIMIT 10
Индексов нет, получим (filesort)
2. SELECT * FROM PLAYERS WHERE COUNTRY=”RUS” ORDER BY
SCORE DESC
key(COUNTRY, SCORE)
VEZETVSEM
Заставим делать сортировку в index’e
● key(A,B)
● Index работает:
○ ORDER BY A
○ A = 5 ORDER BY B
○ ORDER BY A DESC, ORDER BY B DESC
○ A > 5 ORDER BY A
● Index не работает
○ ORDER BY B
○ A > 5 ORDER BY B
○ A in (1,2) ORDER BY B
○ ORDER BY A ASC, B DESC (Trick ORDER BY A ASC, -B ASC)
VEZETVSEM
Коротко о сортировке
VEZETVSEM
Читать данные с диска не эффективно
SELECT STATUS FROM ORDERS WHERE CUSTOMER_ID = 123
index(CUSTOMER_ID,STATUS)
VEZETVSEM
GROUP BY
● SELECT MAX(ID) FROM table
● SELECT DEPT_ID, MAX(SALARY) FROM employee GROUP BY DEPT_ID
Необходим индекс(DEPT_ID,SALARY)
Основная радость Using Index for group by
VEZETVSEM
Index and JOINS
GOOD
SELECT * FROM USERS u
JOIN USER_PROFILE up
ON u.user_profile_id = up.id
WHERE u.role_id = 3
BAD
SELECT * FROM USERS u
JOIN USER_PROFILE up
ON u.id = up.user_id
WHERE u.role_id = 3
Нужен key(user_id)
VEZETVSEM
MERGE_INDEX
● Select * from tabl1 WHERE A= 1 AND B = 3 key(a), key(b).
● Select * from tabl1 WHERE A =1 OR B = 3 (коварный fullscan)
VEZETVSEM
Explain
● Средствами IDE, некоторые замечательно строят граф
● EXPLAIN
● EXPLAIN JSON
● https://dev.mysql.com/doc/refman/5.7/en/explain-output.html
VEZETVSEM
Стратегия выбора Index’ов
● Data and MUST NOW 100 SQL STATEMENTS
● Where
● Exceptions(Hints)
VEZETVSEM
Пример стратегии индексирования.
● Select * from table where a > 5 and b = 3
● Select * from table where a = 5 and b = 5
VEZETVSEM
Trick 1
Есть ключ (A,B)
SELECT * FROM table1 WHERE a BETWEEN 1 AND 4 AND b = 3
что можем сделать
SELECT * FROM table1 WHERE a in (1,2,3,4) AND b = 3
VEZETVSEM
Trick 2
key(CITY,GENDER)
SELECT * FROM PEOPLE WHERE CITY = “ROSTOV”
Индекс будет использоваться, но не максимально эффективно. Для того
чтобы выжать максимум из индекса, что стоит сделать:
SELECT * FROM PEOPLE WHERE CITY = “ROSTOV” AND
GENDER IN (“M”,”F”)
VEZETVSEM
Trick 3...ужастный Filesort
key(A,B)
SELECT * FROM TABLE1 WHERE a in (1,2) ORDER BY b LIMIT 10;
SELECT * FROM (
SELECT * FROM TABLE1 WHERE a =1 limit 10
UNION ALL
SELECT * FROM TABLE1 WHERE a =2 limit 10
) ORDER BY B.
VEZETVSEM
Доступен
● https://www.facebook.com/sergey.white.77
● sergey.white@hotmail.com
● s.ivanenko@vezetvsem.ru
VEZETVSEM

Más contenido relacionado

Destacado

Conocimiento del derecho
Conocimiento del derechoConocimiento del derecho
Conocimiento del derechoDEYSITATIANAIB
 
Organización social y regulaciones existentes en la fase preincásica y la inc...
Organización social y regulaciones existentes en la fase preincásica y la inc...Organización social y regulaciones existentes en la fase preincásica y la inc...
Organización social y regulaciones existentes en la fase preincásica y la inc...DEYSITATIANAIB
 
Автоматизированное тестирование UI в мобильных OC
Автоматизированное тестирование UI в мобильных OCАвтоматизированное тестирование UI в мобильных OC
Автоматизированное тестирование UI в мобильных OCIT61
 
How to become an Android developer
How to become an Android developerHow to become an Android developer
How to become an Android developerIvan Kocijan
 
Trabajos tercera parcial de deontologia
Trabajos tercera parcial  de deontologiaTrabajos tercera parcial  de deontologia
Trabajos tercera parcial de deontologiaDEYSITATIANAIB
 
Resume_PRAVESH_SINGH
Resume_PRAVESH_SINGHResume_PRAVESH_SINGH
Resume_PRAVESH_SINGHPRAVESH SINGH
 
Clase Modelo Blended Learning
Clase Modelo Blended LearningClase Modelo Blended Learning
Clase Modelo Blended LearningLili21on
 
El derecho publico y privado
El derecho publico y privadoEl derecho publico y privado
El derecho publico y privadoDEYSITATIANAIB
 
Presentation to CPFA conference 2016
Presentation to CPFA conference 2016Presentation to CPFA conference 2016
Presentation to CPFA conference 2016Fields in Trust
 
FINAL presentation
FINAL presentationFINAL presentation
FINAL presentationColm Farrell
 
Презентация франшизы интернет-рекламного агентства.
Презентация франшизы интернет-рекламного агентства.Презентация франшизы интернет-рекламного агентства.
Презентация франшизы интернет-рекламного агентства.NikolasLornets
 
Representative Partner Placements
Representative Partner PlacementsRepresentative Partner Placements
Representative Partner PlacementsJohn Jameson
 
Capstone Project_Laboratory Bucking Machine_SolidWorks Drawings
Capstone Project_Laboratory Bucking Machine_SolidWorks DrawingsCapstone Project_Laboratory Bucking Machine_SolidWorks Drawings
Capstone Project_Laboratory Bucking Machine_SolidWorks DrawingsJamie (Ji Eun) Lee
 

Destacado (15)

презентация горбуновой татьяны
презентация горбуновой татьяныпрезентация горбуновой татьяны
презентация горбуновой татьяны
 
Conocimiento del derecho
Conocimiento del derechoConocimiento del derecho
Conocimiento del derecho
 
Organización social y regulaciones existentes en la fase preincásica y la inc...
Organización social y regulaciones existentes en la fase preincásica y la inc...Organización social y regulaciones existentes en la fase preincásica y la inc...
Organización social y regulaciones existentes en la fase preincásica y la inc...
 
CV
CVCV
CV
 
Автоматизированное тестирование UI в мобильных OC
Автоматизированное тестирование UI в мобильных OCАвтоматизированное тестирование UI в мобильных OC
Автоматизированное тестирование UI в мобильных OC
 
How to become an Android developer
How to become an Android developerHow to become an Android developer
How to become an Android developer
 
Trabajos tercera parcial de deontologia
Trabajos tercera parcial  de deontologiaTrabajos tercera parcial  de deontologia
Trabajos tercera parcial de deontologia
 
Resume_PRAVESH_SINGH
Resume_PRAVESH_SINGHResume_PRAVESH_SINGH
Resume_PRAVESH_SINGH
 
Clase Modelo Blended Learning
Clase Modelo Blended LearningClase Modelo Blended Learning
Clase Modelo Blended Learning
 
El derecho publico y privado
El derecho publico y privadoEl derecho publico y privado
El derecho publico y privado
 
Presentation to CPFA conference 2016
Presentation to CPFA conference 2016Presentation to CPFA conference 2016
Presentation to CPFA conference 2016
 
FINAL presentation
FINAL presentationFINAL presentation
FINAL presentation
 
Презентация франшизы интернет-рекламного агентства.
Презентация франшизы интернет-рекламного агентства.Презентация франшизы интернет-рекламного агентства.
Презентация франшизы интернет-рекламного агентства.
 
Representative Partner Placements
Representative Partner PlacementsRepresentative Partner Placements
Representative Partner Placements
 
Capstone Project_Laboratory Bucking Machine_SolidWorks Drawings
Capstone Project_Laboratory Bucking Machine_SolidWorks DrawingsCapstone Project_Laboratory Bucking Machine_SolidWorks Drawings
Capstone Project_Laboratory Bucking Machine_SolidWorks Drawings
 

Más de IT61

Александр Шорин - Как перестать гоняться за кандидатом и начать жить?
Александр Шорин - Как перестать гоняться за кандидатом и начать жить?Александр Шорин - Как перестать гоняться за кандидатом и начать жить?
Александр Шорин - Как перестать гоняться за кандидатом и начать жить?IT61
 
Нина Марменкова - Найти себя и нАЙТИ своих
Нина Марменкова - Найти себя и нАЙТИ своихНина Марменкова - Найти себя и нАЙТИ своих
Нина Марменкова - Найти себя и нАЙТИ своихIT61
 
Павел Седаков - Performance review: теория и практика оценки эффективности ра...
Павел Седаков - Performance review: теория и практика оценки эффективности ра...Павел Седаков - Performance review: теория и практика оценки эффективности ра...
Павел Седаков - Performance review: теория и практика оценки эффективности ра...IT61
 
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджера
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджераДмитрий Костюк - Необходимые инструменты и качества для роста менеджера
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджераIT61
 
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...IT61
 
Ольга Стратанович - Менеджер будущего
Ольга Стратанович - Менеджер будущегоОльга Стратанович - Менеджер будущего
Ольга Стратанович - Менеджер будущегоIT61
 
Константин Гуфан - Сколько лет живет любовь к работе?
Константин Гуфан - Сколько лет живет любовь к работе?Константин Гуфан - Сколько лет живет любовь к работе?
Константин Гуфан - Сколько лет живет любовь к работе?IT61
 
Организация тестирования в Inostudio
Организация тестирования в InostudioОрганизация тестирования в Inostudio
Организация тестирования в InostudioIT61
 
Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?IT61
 
Calabash. Автоматизированное тестирование мобильных приложений
Calabash. Автоматизированное тестирование мобильных приложенийCalabash. Автоматизированное тестирование мобильных приложений
Calabash. Автоматизированное тестирование мобильных приложенийIT61
 
Особенности тестирования мобильных приложений
Особенности тестирования мобильных приложенийОсобенности тестирования мобильных приложений
Особенности тестирования мобильных приложенийIT61
 
Machine learning на примере алгоритма ценообразования, Овсеп Авакян
Machine learning на примере алгоритма ценообразования, Овсеп АвакянMachine learning на примере алгоритма ценообразования, Овсеп Авакян
Machine learning на примере алгоритма ценообразования, Овсеп АвакянIT61
 
Machine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинIT61
 
Изоморфизм как предметное поле data science, Артем Москалец
Изоморфизм как предметное поле data science, Артем МоскалецИзоморфизм как предметное поле data science, Артем Москалец
Изоморфизм как предметное поле data science, Артем МоскалецIT61
 
Data scientology starter pack, Сергей Казаков
Data scientology starter pack, Сергей КазаковData scientology starter pack, Сергей Казаков
Data scientology starter pack, Сергей КазаковIT61
 
Параллельное управление, Елена Сибилева (Жмек дизайн)
Параллельное управление, Елена Сибилева (Жмек дизайн)Параллельное управление, Елена Сибилева (Жмек дизайн)
Параллельное управление, Елена Сибилева (Жмек дизайн)IT61
 
Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...
Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...
Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...IT61
 
Тренды в процессах разработки, Константин Иванов (TradingView)
Тренды в процессах разработки, Константин Иванов (TradingView)Тренды в процессах разработки, Константин Иванов (TradingView)
Тренды в процессах разработки, Константин Иванов (TradingView)IT61
 
Амина Прима - Ой, все! Я ухожу
Амина Прима - Ой, все! Я ухожуАмина Прима - Ой, все! Я ухожу
Амина Прима - Ой, все! Я ухожуIT61
 
Как перестать беспокоиться и начать тестировать или это волшебное слово Agile
Как перестать беспокоиться и начать тестировать или это волшебное слово AgileКак перестать беспокоиться и начать тестировать или это волшебное слово Agile
Как перестать беспокоиться и начать тестировать или это волшебное слово AgileIT61
 

Más de IT61 (20)

Александр Шорин - Как перестать гоняться за кандидатом и начать жить?
Александр Шорин - Как перестать гоняться за кандидатом и начать жить?Александр Шорин - Как перестать гоняться за кандидатом и начать жить?
Александр Шорин - Как перестать гоняться за кандидатом и начать жить?
 
Нина Марменкова - Найти себя и нАЙТИ своих
Нина Марменкова - Найти себя и нАЙТИ своихНина Марменкова - Найти себя и нАЙТИ своих
Нина Марменкова - Найти себя и нАЙТИ своих
 
Павел Седаков - Performance review: теория и практика оценки эффективности ра...
Павел Седаков - Performance review: теория и практика оценки эффективности ра...Павел Седаков - Performance review: теория и практика оценки эффективности ра...
Павел Седаков - Performance review: теория и практика оценки эффективности ра...
 
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджера
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджераДмитрий Костюк - Необходимые инструменты и качества для роста менеджера
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджера
 
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...
 
Ольга Стратанович - Менеджер будущего
Ольга Стратанович - Менеджер будущегоОльга Стратанович - Менеджер будущего
Ольга Стратанович - Менеджер будущего
 
Константин Гуфан - Сколько лет живет любовь к работе?
Константин Гуфан - Сколько лет живет любовь к работе?Константин Гуфан - Сколько лет живет любовь к работе?
Константин Гуфан - Сколько лет живет любовь к работе?
 
Организация тестирования в Inostudio
Организация тестирования в InostudioОрганизация тестирования в Inostudio
Организация тестирования в Inostudio
 
Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?
 
Calabash. Автоматизированное тестирование мобильных приложений
Calabash. Автоматизированное тестирование мобильных приложенийCalabash. Автоматизированное тестирование мобильных приложений
Calabash. Автоматизированное тестирование мобильных приложений
 
Особенности тестирования мобильных приложений
Особенности тестирования мобильных приложенийОсобенности тестирования мобильных приложений
Особенности тестирования мобильных приложений
 
Machine learning на примере алгоритма ценообразования, Овсеп Авакян
Machine learning на примере алгоритма ценообразования, Овсеп АвакянMachine learning на примере алгоритма ценообразования, Овсеп Авакян
Machine learning на примере алгоритма ценообразования, Овсеп Авакян
 
Machine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий Лапин
 
Изоморфизм как предметное поле data science, Артем Москалец
Изоморфизм как предметное поле data science, Артем МоскалецИзоморфизм как предметное поле data science, Артем Москалец
Изоморфизм как предметное поле data science, Артем Москалец
 
Data scientology starter pack, Сергей Казаков
Data scientology starter pack, Сергей КазаковData scientology starter pack, Сергей Казаков
Data scientology starter pack, Сергей Казаков
 
Параллельное управление, Елена Сибилева (Жмек дизайн)
Параллельное управление, Елена Сибилева (Жмек дизайн)Параллельное управление, Елена Сибилева (Жмек дизайн)
Параллельное управление, Елена Сибилева (Жмек дизайн)
 
Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...
Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...
Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...
 
Тренды в процессах разработки, Константин Иванов (TradingView)
Тренды в процессах разработки, Константин Иванов (TradingView)Тренды в процессах разработки, Константин Иванов (TradingView)
Тренды в процессах разработки, Константин Иванов (TradingView)
 
Амина Прима - Ой, все! Я ухожу
Амина Прима - Ой, все! Я ухожуАмина Прима - Ой, все! Я ухожу
Амина Прима - Ой, все! Я ухожу
 
Как перестать беспокоиться и начать тестировать или это волшебное слово Agile
Как перестать беспокоиться и начать тестировать или это волшебное слово AgileКак перестать беспокоиться и начать тестировать или это волшебное слово Agile
Как перестать беспокоиться и начать тестировать или это волшебное слово Agile
 

Качаем ловкость MySQL

  • 2. MySQL vs PL/SQL ORACLE in me... ● Отладчик ● Использование hints ● Шикарный оптимизатор SQL, PL/SQL кода ● Использование JOB’S ● Восстановление данных из временных логических таблиц ● Сама архитектура Oracle ● Миллион и маленькая тележка функций, процедур ● Привычный ООП подход к написанию кода. VEZETVSEM
  • 3. О чём поговорим: ● Индексы MySQL ● Совет по написанию SQL кода в MySQL. ● SQL Tricks or how to make index ● Как используются индексы в 90% случаях VEZETVSEM
  • 4. Индексы ● BTREE ● RTREE ● Hash Index ● FullText MyISAM, InnoDB from 5.6 VEZETVSEM
  • 5. MyISAM vs InnoDB ● Кластер: Нет ● Блокировка на уровне таблицы WTF?!?! ● Полнотекстовый поиск: ДА ● Внешние ключи: НЕТ ● Все индексы одинаковы ● Кластер: ДА ● Блокировка на уровне row ● Полнотекстовый поиск: НЕТ ● Внешние ключи: ДА ● Pimary key - особенный MyISAM InnoDB VEZETVSEM
  • 6. Добби InnoDB for BTREE indexes ● Find all rows with key = 5(point lookup) ● Find all rows with key > 5(open range) ● Find all rows with 5 < key < 10(close range) ● Not find rows with last digit of the key is Zero VEZETVSEM
  • 7. Strings ● “AAAA” < “AAAB” ● LIKE “ABC%” = ABC[low] < key < ABC[high] ● LIKE “%ABC” VEZETVSEM
  • 8. Для чего MySQL использует index ● Поиск ● Сортировка ● Избежание повторного чтения данных VEZETVSEM
  • 9. Search ● Select * from EMPLOYES WHERE LAST_NAME = “IVANOV” key(LAST_NAME) ● Select * from EMPLOYES WHERE LAST_NAME = “IVANOV” AND DEPT = “DEV” key(LAST_NAME,DEPT) VEZETVSEM
  • 10. Multiple Index tricks ● Index(A,B,C) порядок имеет значение ● Полное использование индекса ○ A = 5 ○ A = 5 AND B > 5 ○ A = 5 AND B =6 AND C = 7 ○ A = 5 AND B in (3,4) AND C > 7 ● Не будет использоваться индекс ○ B > 6 ○ B = 6 AND C > 7 ● Используется только часть индекса ○ A > 5 AND B = 6 ○ A = 5 AND B > 6 AND C = 7 VEZETVSEM
  • 11. Основное правило 1. Уважай первую колонку 2. Остерегайся range….. VEZETVSEM
  • 12. Сортировка 1. SELECT * FROM PLAYERS ORDER BY SCORES DESC LIMIT 10 Индексов нет, получим (filesort) 2. SELECT * FROM PLAYERS WHERE COUNTRY=”RUS” ORDER BY SCORE DESC key(COUNTRY, SCORE) VEZETVSEM
  • 13. Заставим делать сортировку в index’e ● key(A,B) ● Index работает: ○ ORDER BY A ○ A = 5 ORDER BY B ○ ORDER BY A DESC, ORDER BY B DESC ○ A > 5 ORDER BY A ● Index не работает ○ ORDER BY B ○ A > 5 ORDER BY B ○ A in (1,2) ORDER BY B ○ ORDER BY A ASC, B DESC (Trick ORDER BY A ASC, -B ASC) VEZETVSEM
  • 15. Читать данные с диска не эффективно SELECT STATUS FROM ORDERS WHERE CUSTOMER_ID = 123 index(CUSTOMER_ID,STATUS) VEZETVSEM
  • 16. GROUP BY ● SELECT MAX(ID) FROM table ● SELECT DEPT_ID, MAX(SALARY) FROM employee GROUP BY DEPT_ID Необходим индекс(DEPT_ID,SALARY) Основная радость Using Index for group by VEZETVSEM
  • 17. Index and JOINS GOOD SELECT * FROM USERS u JOIN USER_PROFILE up ON u.user_profile_id = up.id WHERE u.role_id = 3 BAD SELECT * FROM USERS u JOIN USER_PROFILE up ON u.id = up.user_id WHERE u.role_id = 3 Нужен key(user_id) VEZETVSEM
  • 18. MERGE_INDEX ● Select * from tabl1 WHERE A= 1 AND B = 3 key(a), key(b). ● Select * from tabl1 WHERE A =1 OR B = 3 (коварный fullscan) VEZETVSEM
  • 19. Explain ● Средствами IDE, некоторые замечательно строят граф ● EXPLAIN ● EXPLAIN JSON ● https://dev.mysql.com/doc/refman/5.7/en/explain-output.html VEZETVSEM
  • 20. Стратегия выбора Index’ов ● Data and MUST NOW 100 SQL STATEMENTS ● Where ● Exceptions(Hints) VEZETVSEM
  • 21. Пример стратегии индексирования. ● Select * from table where a > 5 and b = 3 ● Select * from table where a = 5 and b = 5 VEZETVSEM
  • 22. Trick 1 Есть ключ (A,B) SELECT * FROM table1 WHERE a BETWEEN 1 AND 4 AND b = 3 что можем сделать SELECT * FROM table1 WHERE a in (1,2,3,4) AND b = 3 VEZETVSEM
  • 23. Trick 2 key(CITY,GENDER) SELECT * FROM PEOPLE WHERE CITY = “ROSTOV” Индекс будет использоваться, но не максимально эффективно. Для того чтобы выжать максимум из индекса, что стоит сделать: SELECT * FROM PEOPLE WHERE CITY = “ROSTOV” AND GENDER IN (“M”,”F”) VEZETVSEM
  • 24. Trick 3...ужастный Filesort key(A,B) SELECT * FROM TABLE1 WHERE a in (1,2) ORDER BY b LIMIT 10; SELECT * FROM ( SELECT * FROM TABLE1 WHERE a =1 limit 10 UNION ALL SELECT * FROM TABLE1 WHERE a =2 limit 10 ) ORDER BY B. VEZETVSEM