Введите имя домена:
.ua .com.ua .in.ua .org.ua
.ru .com .net .org
Показать все домены

Инструкция по оптимизации MySQL запросов

Ответы на вопросы от компании «Украинский хостинг».

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

В процессе добавления в базу данных информации, размер таблиц базы данных увеличивается и на получение информации с базы данных уходит все больше времени. Ускорить получение информации из базы данных помогает оптимизация MySQL запросов. На данный момент значительная часть сайтов создается на базе CMS (систем управления содержимым сайта), в которых есть возможность установки дополнительных модулей и плагинов, некоторые из которых могут выполнять дополнительные запросы к базе данных. В связи с этим рекомендуется отключить ненужные модули и плагины, чтобы снизить нагрузку на MySQL сервер. Так же в базе данных могут находится старые статьи, комментарии и.т.д, которые уже не актуальны, но увеличивают размер базы данных, в связи с чем рекомендуется удалить весь ненужный контент из базы данных. Если после выполнения указанных шагов скорость получения информации из базы данных все еще будет являеться недостаточно приемлемой, следует прибегнуть к оптимизации MySQL запросов. Увидеть различные варианты оптимизации запросов к базе данных возможно на следующем ресурсе - http://www.mysql.ru/docs/man/MySQL_Optimisation.html

Один из таких вариантов представлен ниже.

Допустим в базе данных есть таблица с продуктами, среди которых требуется найти продукты с ценой 30.

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

SELECT * FROM product WHERE price = 30

Т.е из таблицы со списком продуктов (product) берется вся информация, где цена (price) соответствует 30.

При подобном запросе вся таблица product будут проверена на предмет совпадения записей в колонке price со значением 30.

Время выполнения подобного запроса будет зависеть от размера таблицы product.

Если таблица product большая, следует рассмотреть вариант ее оптимизации.

Оптимизировать таблицу возможно при помощи создания индекса на колонку таблицы.

Для этого требуется выполнить следующий MySQL запрос:

CREATE INDEX price ON product(price);

Данный запрос сохранит содержимое колонки price и при следующем обращении к данной колонке уже не понадобится проверять всю таблицу product на совпадение значения 30 в колонке price, т.к все значения в колонке price будут известны.

См.также: