Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > что быстрее?


Автор: CruorVult 9.7.2010, 14:32
к примеру есть таблица companies а также связанные по company_id - labels, peoples и др. В связаных табл. может быть несколько записей по каждой компании. 
Что будет быстрее:
1) выбрать нужные компании c LEFT JOIN  по всем связанным табл. а потом пройтись по массиву и привести в нормальный вид.
2) достать все компании. пройтись циклом и по каждой компании и достать все соответсвующие записи в связанных таблицах. 

Автор: Mavrun 9.7.2010, 14:39
Первое быстрее. Чем меньше обращений к БД, тем быстрее должно работать.
Вообще советую почитать статью по оптимизации SQL запросов
http://shublog.ru/mysql/kak-optimizirovat-sql-zaprosy/

Автор: CruorVult 9.7.2010, 15:42
в общем решил 1 вариант использовать, темболее что в связаных таблицах не много записей.
Mavrun, спасибо за статейку

Автор: CruorVult 12.7.2010, 11:46
Первый вариант не катит!

Если выбирать все записи, то может 1-й вариант пойдет. Но мне нужно не все, а выбранные по LIMIT.
А т.к. используются LEFT JOIN-ы, то нужно группировать, соответсвенно доставать все записи, что по времени занимает(около штуки компаний) 2.25117588043 сек. smile 

Автор: CruorVult 12.7.2010, 12:39
итого при выборке около 1000 компаний:
1)
2.21443104744 сек  - выбор всех: 
2.22750496864 сек - GROUP + LIMIT 10

2) 
3.10412287712 сек  - выбор всех: 
0.0608060359955 сек - LIMIT 10

Автор: Wolf1994 13.7.2010, 06:34
3. достать все компании. пройтись циклом и по каждой компании и достать все соответсвующие записи в связанных таблицах. Выбрать одним запросом по списку идентификаторов - `company_id` IN (1,2...) - данные из связанных таблиц.

Автор: CruorVult 13.7.2010, 09:22
Цитата(Wolf1994 @  13.7.2010,  06:34 Найти цитируемый пост)
3. достать все компании. пройтись циклом и по каждой компании и достать все соответсвующие записи в связанных таблицах. Выбрать одним запросом по списку идентификаторов - `company_id` IN (1,2...) - данные из связанных таблиц.


Хм.. я ведь с начала хотел так сделать, потом чет с головы вылетело smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)