Вы читаете “ Оптимизация запросов MySQL”, в блоге Оптимизация сайтов от cross{blog}
- Опубликовано:
- 03.04.08 / 7pm
- Рубрика:
- Разработка сайтов
Реклама
Полезные ссылки
Оптимизация запросов 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 приходится только в тех редких случаях, когда выборки происходят из одной таблицы.
Оптимизация запросов MySQL
Комментарии (7)Оставить комментарий |