| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 сек. |
| Автор: 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...) - данные из связанных таблиц. |