Можно ли уменьшить количество запросов ?

Анатолий 1984

Новичок
Добрый день.
Вывожу меню тегов из таблицы в которой более 20000 тегов такой вот функцией.

PHP:
function spisok_tegov($name_tega, $kol_do, $kol_posle) {
    $connect = connectDB();
    $result = mysqli_query($connect, "(SELECT * FROM menu_qsdf WHERE `menu`='tegi' AND `name` <= '".$name_tega."' ORDER BY `name` DESC LIMIT ".$kol_do.") UNION (SELECT * FROM menu_qsdf WHERE `menu`='tegi' AND `name` > '".$name_tega."' ORDER BY `name` ASC LIMIT ".$kol_posle.") ORDER BY `name` ASC");
    mysqli_close($connect);
    while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
        $arr_tegov[]=$row;
    }
    return $arr_tegov;
}
Решил к каждому тегу дописать количество материалов которое будет отображено при нажатии этой функцией.

PHP:
function kol_mat_teg($id_tega) {
                    $connect = connectDB();
                    $result = mysqli_query($connect, "SELECT pogovorki_qsdf.id, pogovorki_qsdf.material FROM pogovorki_qsdf INNER JOIN pogovorki_sviazi_qsdf ON pogovorki_qsdf.id = pogovorki_sviazi_qsdf.idmat WHERE pogovorki_sviazi_qsdf.idmenu = ".$id_tega);
                    mysqli_close($connect);
                    $kolich = mysqli_num_rows($result);
                    return $kolich;
                    }
В итоге получается что у меня 1 запрос выводит все теги и + ещё 20 выводит к ним количество материалов. Можно ли как то сократить количество запросов ?

Опыта мало ! Возможно есть какой то вариант !
 

fixxxer

К.О.
Партнер клуба
Если хочешь, чтобы тебе помогли, либо сформулируй структуру таблиц словами, чтобы все было ясно без кода, либо исправь свой транслит студента с паскалем на нормальные английские имена. В этих $kolich и sviazi никто разбираться не будет - сразу кровь глаза застилает.
 

Анатолий 1984

Новичок
Есть 3 таблицы.
1) Таблица с тегами 20000 строк
id и teg
2) Таблица с материалами
id и material
3) Таблица связей этих двух таблиц

Формирую меню из 20 тегов - 1 запрос
Рядом с каждым пунктом меню(тегом) хочу вывести количество материалов, которое будет отображено при нажатии по каждому тегу.
Сделать получилось, но только отдельным запросом на каждый тег ! Т.е. ещё + 20 запросов.

Предполагаю что это не правильно ! Время затраченное на 21 запрос 0,028 сек. В принципе меня устраивает время, но большое количество запросов на странице.
Может нужно таблицу связей загнать в массив одним запросом и средствами php уже считать какое количество материалов есть по данному id тега.
Как сделать правильно ?
 
Последнее редактирование:

Анатолий 1984

Новичок
Загнать всю таблицу не вариант, 1 запрос уже 0.099 сек. 50000 строк
 
Последнее редактирование:

Breeze

goshogun
Команда форума
Партнер клуба
Тебе нужно освоить такие возможности SQL как: count, group by, in
За mysqli_num_rows в том контексте, в каком ты её используешь -- линейкой по пальцам.
 

Фанат

oncle terrible
Команда форума
@Breeze, mysqli_num_rows в любом контексте не имеет смысла :)
но здесь конечно это вредительство
 
Сверху