Задавайте вопросы, мы ответим
Вы не зашли.
Ребят, помогите упростить цикл вывода новостей. Читал мануалы по JOIN, читал топорные статьи с примерами, но так и не смог составить правильный запрос для своего конкретного примера. В очень упрощённом виде код выглядит так:
Отредактированно Freakmeister (07.06.2012 17:10:22)
Неактивен
Freakmeister написал:
Как тут можно объединить запросы $query1, $query2 и $query3 в один? В идеале к ним бы ещё конечно и $query прилепить, но мне сейчас хотя бы с этими тремя разобраться.
А зачем?
Неактивен
Для скорости работы скрипта.) Чтобы при выводе 20 новостей, в цикле он делал 20 запросов, а не 60. Ну и самое главное, научиться хочу делать такие вещи.
Неактивен
Вы действительно считаете, что скорость работы скрипта уменьшится от того, что Вы три запроса в один превратите? Это совершенно не обязательно, в данном случае уж точно.
Ну а если уж так хочется объединить в один результаты запросов - смотрите в сторону UNION.
Неактивен
vasya , deadka
А из каких соображений, невыгодно объединить то в один запрос ?
В старом варианте, PHP ведь действительно делает 60 запросов.
Отредактированно evgeny (09.06.2012 10:03:56)
Неактивен
evgeny, джоины ведь тоже чего-нибудь да стоят, особенно в том количестве, что в твоём запросе. А запросы у топикстартера вполне себе шустро будут работать, если составные индексы хорошо расставить. 60 их - ну и что с того, подключения-то к базе каждый раз не происходит.
vasya, твоя очередь .
Неактивен
У меня мысль та же самая. При объединении разноплановых запросов вместо нескольких простых, получается монстр с джойнами, подзапросами, группировкой и сортировкой, который будет работать медленней, чем несколько простых запросов.
Неактивен
deadka, vasya
Да, это тема уже обсуждалась много раз. Да не спорю что тупо соединять все в один запрос это далеко не всегда эффективный вариант.
Но граница ведь тоже где та должна быть ? 100, 200, 1000 не зависимых запросов ? :-)
Просто мне этот случай мне да показался приближающийся к той самой границе ...
Неактивен
Ну вы меня озадачили... Я всегда думал, что чем меньше запросов к БД, тем быстрее выполняется скрипт. Надо будет это дело потестить. А вообще, чисто с технической стороны, в цикле
Неактивен
Freakmeister написал:
Ну вы меня озадачили... Я всегда думал, что чем меньше запросов к БД, тем быстрее выполняется скрипт.
А представьте, что вы в одном запросе все данных из всех таблиц вытащили. Уверены, что быстрее получится ?
Freakmeister написал:
А вообще, чисто с технической стороны, в цикле
while ($row = mysql_fetch_array($query)) { }что происходит? Каждый оборот цикла делается запрос к БД по переменной $query, или запрос происходит всего раз, перед циклом, а сам цикл уже обрабатывает PHP?
Запрос происходит перед циклом, а mysql_fetch_array просто вытаскивает очередную строку из уже полученного из базы набора строк.
Неактивен