Имеется таблица alog
с содержанием:
id || userid || text
================================
1 || 12000 || действие1
...
15014 || 49621 || дейтсвие15014
...
32194 || 6700 || действие32194
Соответственно, более 32 тысяч строк.
Обращаюсь к таблице:
$request=$mysqli->query("
SELECT `alog`.`text`,`users`.`login`,`alog`.`userid`
FROM `alog`
JOIN `users`
ON `alog`.`userid`=`users`.`id`
ORDER BY `alog`.`id` DESC
LIMIT 6
");
Затем обрабатываю для каждой строки:
for($i=0;$i<mysqli_num_rows($request);$i++)
{
$rows=$request->fetch_assoc();
echo '<p class="category">'.$rows['login'].' - '.$rows['text'].'</p>';
}
Запрос выполняется несколько секунд.
Какие есть способы сократить время выполнения запроса к таблице с большим количеством строк? Возможно, какие-то дополнительные библиотеки.
Попробуйте переписать запрос так:
SELECT `alog`.`text`,`users`.`login`,`alog`.`userid`
FROM (select * from alog order by id desc limit 6) `alog`
JOIN `users`
ON `alog`.`userid`=`users`.`id`
ORDER BY `alog`.`id` DESC
В вашем изначальном запросе MySQL сначала получает все записи из alog, подбирает подходящих для них пользователей и только после этого сортирует всю выборку и берет первые 6 записей.
В варианте с подзапросом, MySQL сначала получает 6 записей, причем скорее всего использует индекс по полю id и не проходит по всей таблице и даже не использует сортировку, так как из индекса записи выбираются сразу в нужном порядке. И только после этого подбирает подходящих пользователей именно для этих 6 записей.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В таблице бд есть поле типа enumНужно получить все возможные значения этого поля
Работаю над локализацией сайта, столкнулся с такой проблемой, при смене языка в настройках сайта все работает, как нужно, но стоит только...
Здравствуйте, возникла такая проблема имеются три одинаковых таблицы, содержимое которых подключается из другого файла php, но почему то содержимое...
Я хочу сделать чат на сокетах с помощью Nodejs на apache