Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > вложенные запросы


Автор: gcc 5.2.2009, 17:59
подскажите нужно ли стремиться писать вложенные запросы в одном запросе, вместо нескольких разных запросов?

mysql быстрее будет если будут вложенные чем разные... ? 

на этом форуме например запросов до 10 и больше, но можно все около 2-3...

специально спрашиваю чтобы знать как правильно, сейчас 3-8...

Автор: skyboy 5.2.2009, 18:31
смотря, что за запросы; какую несут нагрузку; как часто выполняются.
ну, и само собой - надо ли использовать именно вложенные подзапросы, зависит от того, какую они будут выполнять функцию.
само по себе количество запросов за сеанс влияет на быстродействие намного слабее, чем качество запросов(кривые-руки-style) и их количество одновременно работающих пользователей.
уменьшение количества запросов за счет использования подзапросов практически ничего не даст(в отличие от уменьшения количества запросов путем кеширования).

Автор: gcc 7.6.2009, 17:50
ну вот например,  с точки зрния правильности (производительность сейсас не нужна, если они будут мадленно, то их можно поставить только на одну страницу), как их писать? вложенными, ALL UNION, разными....

Код

SELECT id, username,
               ( SELECT count(*) from sessions where expires >= '.$time.' or expires is null ),
               ( SELECT count(*) from comment ),
               ( SELECT count(*) from content ),
               ( SELECT count(*) from section ),
               ( SELECT count(*) from users ),
               
               (select id_co, name_text from comment ORDER BY id desc limit 2 )
               (select id_co, name_text from section ORDER BY id desc limit 2 )
               (select id_co, name_text from content ORDER BY id desc limit 2 )
               (select id_co, name_text from comment ORDER BY id desc limit 2 )
               (select id_co, name_text from comment ORDER BY id desc limit 2 )
               
                   FROM users ORDER BY id desc limit 1


Добавлено @ 17:53
Цитата(skyboy @ 5.2.2009,  18:31)
в отличие от уменьшения количества запросов путем кеширования

я нигде не видел что было написано, например, что если использовать memcache, то нужно писать много маленьких запросов... 

Автор: skyboy 8.6.2009, 10:28
Цитата(gcc @  7.6.2009,  16:50 Найти цитируемый пост)
что если использовать memcache, то нужно писать много маленьких запросов... 

я имел в виду другое.
вот у тебя 5 запросов.
если ты их объединишь в один большой, ускорение может быть вообще не заметно(если сервер БД не слишком удален от клиента, получающего результат).
С другой стороны, если результат выполнения хоть одного запроса можно закешировать, то скорость может возрасти значительно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)