Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2014, 13:54   #1
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию MySql производительность

Есть два вариант составления запроса. Либо всё объединить в один с Join. Либо сделать всё раздельно несколькими запросами для примера.

Один

Код:
SELECT * FROM `vacancy` `vacancy`
LEFT OUTER JOIN `clubs` `club` ON (`vacancy`.`club_id`=`club`.`id`)  
LEFT OUTER JOIN `country` `country` ON (`vacancy`.`country_id`=`country`.`id`) 
LEFT OUTER JOIN `city` `city` ON (`vacancy`.`city_id`=`city`.`id`)  
LEFT OUTER JOIN `currency` `currency` ON (`vacancy`.`currency_id`=`currency`.`id`)  
LEFT OUTER JOIN `user` `user` ON (`vacancy`.`user_id`=`user`.`id`)  
WHERE (((vacancy.moderated=:ycp0) AND (vacancy.published=:ycp1)) AND (vacancy.parent_id is null)) 
ORDER BY vacancy.updated 
DESC LIMIT 5
Или же этот запрос разбитый на мелкие select итого выходит около 20 select но более лёгкие (понятно что это всё генерируется автоматом).

Так вот что будет производительней?
dr.Chas вне форума Ответить с цитированием
Старый 27.03.2014, 14:11   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Но в каждом из мелких vacancy будет основной таблицей и к ней один LEFT JOIN? Даже бы не парился - одним запросом
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.03.2014, 14:15   #3
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Но в каждом из мелких vacancy будет основной таблицей и к ней один LEFT JOIN? Даже бы не парился - одним запросом
Да я не парюсь, оно всё работает. Такой sql генерируется сам. Но есть возможность генерировать либо один запрос с join либо 20 простых. И тут мне стало любопытно, что оптимальнее для бд. Может кто изучал эту тему.
dr.Chas вне форума Ответить с цитированием
Старый 27.03.2014, 14:21   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Выборка по основной таблице в мелких запросах повторится 20 раз - уже потеря. Как повлияют LEFT-ы нужно смотреть планы запросов и плюс эксперимент
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.03.2014, 15:08   #5
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Выборка по основной таблице в мелких запросах повторится 20 раз - уже потеря. Как повлияют LEFT-ы нужно смотреть планы запросов и плюс эксперимент
Ну я экспериментировал сам. Правда значений в таблице не много. С join быстрее работает.
dr.Chas вне форума Ответить с цитированием
Старый 27.03.2014, 15:36   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
SELECT * FROM `vacancy`
Звездочка вызывает вопросы. Наверняка не нужны все поля с таблиц по JOIN, а скорее всего только наименования, может еще что-то. Там лучше перечень полей. И если однозначно существует club.id для vacancy.club_id, то лучше заменить LEFT JOIN на INNER JOIN, что серьезно быстрей.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.03.2014, 16:07   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

да тут однозначно лефты вызывают подозрение
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MidletPascal производительность. O m n i s Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 21.11.2013 16:37
Фриланс и производительность Abuhamed Свободное общение 6 09.04.2013 20:16
Производительность компьютера Сhimit Компьютерное железо 0 20.05.2011 19:42
Производительность БД NARKOM Софт 1 02.06.2010 13:51
производительность БД в Дельфи gene2109 БД в Delphi 12 01.08.2008 22:45