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

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

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

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

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

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

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

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

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

Цитата:
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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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


16:41.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.