<MyRusakov.ru />

WordPress 6 с Нуля до Гуру

WordPress 6 с Нуля до Гуру

Этот курс научит Вас созданию самых разных сайтов на самой популярной в мире CMS - WordPress. Вы увидите установку и настройку локального сервера, разбор каждой настройки, каждой кнопки и каждого пункта меню в панели WordPress.

Также Вы получите и всю практику, поскольку прямо в курсе с нуля создаётся полноценный Интернет-магазин, который затем публикуется в Интернете. И всё это прямо на Ваших глазах.

Помимо уроков к курсу идут упражнения для закрепления материала.

И, наконец, к курсу идёт ценнейший Бонус по тому, как используя ChatGPT и создавая контент для сайта, можно выйти на пассивный доход. Вы наглядно увидите, как зарегистрироваться в ChatGPT (в том числе, и если Вы из России), как правильно выбрать тему для сайта, как правильно генерировать статьи для него(чтобы они индексировались поисковыми системами) и как правильно монетизировать трафик на сайте.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Чтение плана запроса в MySQL

Чтение плана запроса в MySQL

Чтение плана запроса (execution plan) в MySQL — это важный навык для оптимизации и понимания того, как СУБД выполняет запрос. План запроса показывает, какие индексы используются, как таблицы соединяются, и какие операции выполняются. Для анализа плана запроса используется команда EXPLAIN.

1. Как получить план запроса

Чтобы получить план запроса, добавьте ключевое слово EXPLAIN перед SQL-запросом. Например:

EXPLAIN SELECT * FROM users WHERE age > 30;

2. Основные столбцы в выводе EXPLAIN

Результат выполнения EXPLAIN содержит несколько столбцов. Вот основные из них:

|  Столбец        |  Описание                                                                  |
|--------------------|-----------------------------------------------------------------------------|
|  id               | Идентификатор шага выполнения. Если запрос содержит подзапросы, каждый подзапрос будет иметь свой  id . |
|  select_type      | Тип операции  SELECT . Например,  SIMPLE  (простой запрос),  PRIMARY  (основной запрос),  SUBQUERY  (подзапрос). |
|  table            | Имя таблицы, к которой относится строка.                                    |
|  partitions       | Разделы таблицы, которые будут использоваться (если таблица разделена).     |
|  type             | Тип соединения (access type). Показывает, как MySQL будет искать строки в таблице. Например,  ALL  (полное сканирование),  index  (сканирование по индексу),  ref  (поиск по ключу). |
|  possible_keys    | Возможные индексы, которые могут быть использованы для выполнения запроса.  |
|  key              | Фактический индекс, который будет использован.                              |
|  key_len          | Длина используемого индекса (в байтах).                                     |
|  ref              | Столбцы или константы, которые сравниваются с индексом.                     |
|  rows             | Оценочное количество строк, которые будут обработаны.                       |
|  filtered         | Процент строк, которые будут отфильтрованы после применения условий  WHERE . |
|  Extra            | Дополнительная информация о выполнении запроса. Например,  Using where ,  Using index ,  Using temporary ,  Using filesort . |

3. Расшифровка ключевых параметров

type

  • ALL: Полное сканирование таблицы (самый медленный способ).
  • index: Сканирование по индексу (быстрее, чем ALL, но всё ещё медленно).
  • range: Поиск по диапазону значений (например, BETWEEN, IN, >).
  • ref: Поиск по не уникальному индексу.
  • eq_ref: Поиск по уникальному индексу (например, PRIMARY KEY).
  • const: Поиск по константе (например, WHERE id = 1).

Extra

  • Using where: Применяется фильтрация по условию WHERE.
  • Using index: Запрос использует только индекс (покрывающий индекс).
  • Using temporary: Создается временная таблица (может быть медленно).
  • Using filesort: Сортировка выполняется на диске (медленно).

4. Пример анализа плана запроса

Рассмотрим пример:

EXPLAIN SELECT * FROM users WHERE age > 30 ORDER BY name;

Результат может выглядеть так:

| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra          |
|----|-------------|-------|------|---------------|------|---------|------|------|----------|----------------|
| 1  | SIMPLE      | users | ALL  | NULL          | NULL | NULL    | NULL | 1000 | 50.00    | Using where; Using filesort |

Анализ:

  • type: ALL: MySQL выполняет полное сканирование таблицы, что неэффективно.
  • key: NULL: Индекс не используется.
  • rows: 1000: MySQL оценивает, что нужно просканировать 1000 строк.
  • Extra: Using where; Using filesort: Применяется фильтрация и сортировка на диске.

Рекомендации:

  • Добавьте индекс на столбец age, чтобы ускорить фильтрацию.
  • Добавьте индекс на столбец name, чтобы избежать сортировки на диске.

5. Использование EXPLAIN FORMAT=JSON**

Для более детального анализа можно использовать EXPLAIN FORMAT=JSON:

EXPLAIN FORMAT=JSON SELECT * FROM users WHERE age > 30;

Этот формат предоставляет расширенную информацию, включая стоимость выполнения запроса.

6. Практические советы

  1. Индексы: Убедитесь, что индексы используются для фильтрации и сортировки.
  2. Оптимизация WHERE: Упрощайте условия в WHERE, чтобы они могли использовать индексы.
  3. Избегайте filesort: Добавляйте индексы на столбцы, используемые в ORDER BY.
  4. Анализ rows: Если значение rows слишком велико, это может указывать на неэффективность запроса.

7. Пример оптимизации

Добавим индекс на столбец age:

CREATE INDEX idx_age ON users(age);

Теперь выполним EXPLAIN снова:

EXPLAIN SELECT * FROM users WHERE age > 30;

Результат:

| id | select_type | table | type  | possible_keys | key     | key_len | ref  | rows | filtered | Extra       |
|----|-------------|-------|-------|---------------|---------|---------|------|------|----------|-------------|
| 1  | SIMPLE      | users | range | idx_age       | idx_age | 4       | NULL | 500  | 100.00   | Using where |

Анализ:

  • type: range: MySQL использует индекс для поиска по диапазону.
  • key: idx_age: Используется индекс idx_age.
  • rows: 500: Количество обрабатываемых строк уменьшилось.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.