Крутые ребята, возможно, перешли на NoSQL, но для многих из нас реляционные базы данных остаются важной частью повседневной веб-разработки. Я также готов поспорить, что реляционные базы данных будут еще через десять лет. Несмотря на наше знакомство, синтаксис SQL является мрачным искусством. Единственный человек, который понимает SQL, — тот странный парень с бородой и сандалиями, который бормочет себе в углу вашего офиса. Все остальные используют силу и проводят много разочарованных часов, бесцельно глядя на сломанные запросы SELECT.
 MySQL и MariaDB предоставляют полезную команду EXPLAIN которая может анализировать ваши запросы и выявлять потенциальные проблемы с производительностью: 
-   
EXPLAINописывает, как будет обрабатыватьсяSELECT, включая информацию оJOINS. -   
EXPLAIN EXTENDEDпредоставляет дополнительную информацию и оценивает количество строк таблицы, отфильтрованных по условию. 
Команда просто добавляется в начало вашего запроса, например
 EXPLAIN SELECT * FROM `user`; 
Выходной результат:
 +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | user | ALL | NULL | NULL | NULL | NULL | 4 | | +----+-------------+-------+------+---------------+------+---------+------+------+-------+ 
Хм — что это все значит?
  К счастью, эти хорошие люди в MariaDB предоставили полезный анализатор, чтобы объяснить ваши ОБЪЯСНЕНИЯ: 
  https://mariadb.org/explain_analyzer/ 
Вы можете вставить полученную таблицу в поле Отправить новое объяснение и нажать кнопку « Анализ» …
  Нажмите на любой жирный подчеркнутый текст для получения дополнительной информации о результате EXPLAIN . 
Извлечение EXPLAIN таблиц
  К сожалению, извлечение таблицы EXPLAIN может быть немного сложнее.  Если вы используете интерфейс командной строки mysql>, результат можно обернуть: 
 +----+-------------+-------+------+---------------+------+---------+------+----- -+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+----- -+-------------+ | 1 | SIMPLE | user | ALL | NULL | NULL | NULL | NULL | 4 | Using where | +----+-------------+-------+------+---------------+------+---------+------+----- -+-------------+ 
Копирование непосредственно из консоли в Анализатор не будет работать, если вы сначала не удалите необходимые разрывы строк. Вы можете увеличить ширину окна консоли, но нет гарантии, что все результаты подойдут.
  Лучшая альтернатива — вывести результат в текстовый файл и скопировать оттуда таблицу EXPLAIN .  Если вы используете командную строку MySQL, команда tee перенаправит весь вывод консоли в именованный файл, например 
 mysql> tee out.txt 
(Обратите внимание, что пути к файлам должны использовать косую черту ‘/’ даже в Windows.)
Кроме того, вы можете использовать параметр командной строки \ T при запуске mysql:
 > mysql \T "out.txt" 
Или, если вы чувствуете себя особенно смелым, вы можете направить весь вывод EXPLAIN в файл с помощью одной команды:
 > mysql -u [dbuser] -p[dbpass] -e "[query]" > out.txt 
где:
-   
[dbuser]— имя пользователя базы данных -   
[dbpass]— пароль пользователя базы данных (между ключом -p и паролем нет пробела) -   
[query]является оператором SQL, например,USE mydatabase; EXPLAIN SELECT * FROM mytable;USE mydatabase; EXPLAIN SELECT * FROM mytable; 
В этом случае путь к выходному имени файла должен соответствовать стандарту вашей ОС, то есть «\» в Windows и «/» в Mac или Linux.
Explain Analyzer — отличный инструмент, который объясняет EXPLAIN на простом английском языке. Вскоре вы станете гуру SQL в вашей команде … начните отращивать бороду.
