О записи
Реклама


Полезные ссылки

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

Немаловажный фактор в продвижении сайта - его быстродействие. Один из факторов который значительно может снизить быстродейтсвие - не оптимизированные запросы к MySQL. Допустим простой запрос:

Select a.*, b.*, c.*, d.* From a, b, c, d WHERE d.c_id=c.id and c.b_id=b.id and b.a_id=a.id

Казалось бы совсем простой запрос и с этим можно согласиться, если количество записей в каждой из таблиц невелико. Ведь получается что все таблицы поочередно перемножаются, а объем данных которые приходится выбираться MySQL значительно увеличивается!

Для оптимизации данного запроса можно использовать следующее выражение A LEFT JOIN B

Пример того же запроса с использованием Left Join:

Select a.*, b.*, c.*, d.* From a

Left Join b on a.id=b.a_id

Left Join c on b.id=c.b_id

Left Join d on c.id=d.c_id

Что при этом происходит?

Если при использовании Where на каждую строку в основной таблице(А) искалось соответсвие в таблице B, то с использованием Left Join все происходит несколько по иному алгоритму - каждая из таблиц последовательно перемножается с небходимой по условию после оператора ON, что значительно ускоряет быстродейтсвие данного запроса.

Еще один плюс данного метода состоит в том, что с помощью одного запроса на странице можно выбрать все необходимые данные. То есть время необходимое на подключение mysql_query, если использовалось бы Where, значительно уменьшается.

Из своего опыта могу сказать, что разобравшись с методикой работы Left Join и Inner Join, использовать Where приходится только в тех редких случаях, когда выборки происходят из одной таблицы.

Добавить пост в: Google slashdot YahooMyWeb Digg Technorati Delicious Забобрить эту страницу! Добавить на Newsland.ru Добавить на СМИ2 Добавить на RUmarkz Добавить на Ваау! Добавить на rucity.com Добавить в закладки МоёМесто.ru