Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> что быстрее? 
:(
    Опции темы
CruorVult
Дата 9.7.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 1
Всего: 28



к примеру есть таблица companies а также связанные по company_id - labels, peoples и др. В связаных табл. может быть несколько записей по каждой компании. 
Что будет быстрее:
1) выбрать нужные компании c LEFT JOIN  по всем связанным табл. а потом пройтись по массиву и привести в нормальный вид.
2) достать все компании. пройтись циклом и по каждой компании и достать все соответсвующие записи в связанных таблицах. 
PM MAIL Skype   Вверх
Mavrun
Дата 9.7.2010, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 25.11.2007

Репутация: 2
Всего: 13



Первое быстрее. Чем меньше обращений к БД, тем быстрее должно работать.
Вообще советую почитать статью по оптимизации SQL запросов
http://shublog.ru/mysql/kak-optimizirovat-sql-zaprosy/
PM MAIL   Вверх
CruorVult
Дата 9.7.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 1
Всего: 28



в общем решил 1 вариант использовать, темболее что в связаных таблицах не много записей.
Mavrun, спасибо за статейку
PM MAIL Skype   Вверх
CruorVult
Дата 12.7.2010, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 1
Всего: 28



Первый вариант не катит!

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


Это сообщение отредактировал(а) CruorVult - 12.7.2010, 11:47
PM MAIL Skype   Вверх
CruorVult
Дата 12.7.2010, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 1
Всего: 28



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

2) 
3.10412287712 сек  - выбор всех: 
0.0608060359955 сек - LIMIT 10
PM MAIL Skype   Вверх
Wolf1994
Дата 13.7.2010, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 2
Всего: 29



3. достать все компании. пройтись циклом и по каждой компании и достать все соответсвующие записи в связанных таблицах. Выбрать одним запросом по списку идентификаторов - `company_id` IN (1,2...) - данные из связанных таблиц.
PM MAIL WWW   Вверх
CruorVult
Дата 13.7.2010, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 1
Всего: 28



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


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

Это сообщение отредактировал(а) CruorVult - 13.7.2010, 09:23
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0865 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.