один запрос или несклоко? (оптимиз)

Печать RSS
353


Господин ПЖ
0
10. Александр, не в том направлении копаете, я так понимаю вы в цикле хотите проверять какие-либо данные из бд, не лучше ли эти данные (точнее результаты данных) иметь уже там чтобы выводить их одним запросом.
Можно пойти другим путем и кэшировать все все результаты в обычный файл
Автор
Чатланин
0
не, у меня к примеру в обменике, вывод категорий, сколько там файлов, и вес категории,
что бы не делать так:
(запрос на вывод категорий)
цикл(
(запрос на к_во файлов, аля вере пид = $array[id])
(запрос на вес файлов, аля вере пид = $array[id])
)
а сделать это в одном запросе ещё до цикла, типа
SELECT a.`name`, a.`id`, a.`ext`,
(SELECT COUNT(b.`id`) FROM `upload` b WHERE b.`type` = 'file' AND b.`refid` = a.`id`) as `count_all`,
(SELECT SUM(c.`size`) FROM `upload` c WHERE c.`type` = 'file' AND c.`refid` = a.`id`) as `size_all` FROM `upload` a WHERE a.`type` = 'dir' ORDER BY a.`name` ASC
так же лучше будет?
А

Пришелец
0
Лучше делать подзапросами.Нечего ещё раз запрос посылать и чтот делать... подзапросом быстрее будет.
А

Пацак
0
ТС, лучше запрос, запрос, зпарос, а для упрощения сделай образ (VIEW) в самой БД, так легче код воспринимать smile ;

Ктулху
0
Кстати, а почему бы не проверить на практике? нагенерировать к примеру 10000 записей и проверить как быстрее =) чистый профит же
О

Землянин
0
15, Это ничего не даст. Нужно хотя бы учитывать еще и число одновременных подключений к БД.
14, в данном случае если создать представление (view), то оно будет работать только по алгоритму TEMPTABLE, тоесть будет создаваться временная таблица, поэтому значимого результата не добьется.
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск