Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 27.03.2014, 12:54   #1
dr.Chas
***
СуперМодератор
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,161
По умолчанию 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, 13:11   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

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

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

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

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

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS