Оптимизация баз данных MySQL

Опубликовано: 21.10.2017

Оптимизацию работы с БД можно разделить на 3 типа:

оптимизация запросов; оптимизация структуры; оптимизация сервера.

В случае виртуального хостинга возможна только оптимизация запросов и структуры таблиц.

Нижеописанные в статье команды удобнее всего выполнять через SSH .

Соединиться с сервером баз данных можно следующей командой:

mysql -u  имя_пользователя  -p -h  имя_сервера_БД   имя_базы

Запросами, которые чаще всего поддаются оптимизации, являются запросы на выборку SELECT.

SELECT

Для того чтобы посмотреть, как будет выполняться запрос на выборку, используется оператор EXPLAIN . С его помощью вы можете посмотреть, в каком порядке будут связываться таблицы и какие индексы при этом будут использоваться.

Пример:

mysql> EXPLAIN SELECT id FROM table1 WHERE id='6891';

Индексы применяются для быстрого поиска строк с указанным значением одного столбца. Без индекса чтение таблицы осуществляется по всей таблице, начиная с первой записи, пока не будут найдены соответствующие строки. Чем больше таблица, тем больше накладные расходы. Если же таблица содержит индекс по рассматриваемым столбцам, то MySQL может быстро определить позицию для поиска в середине файла данных без просмотра всех данных.

Основная ошибка начинающих — это отсутствие индексов на нужных полях или создание оных на ненужных полях.

Если вы делаете простую выборку наподобие:

SELECT * FROM table WHERE field1 = 123; то вам нужно проставить индекс на поле field1.

Если вы используете в выборке условие по двум полям:

rss