Как заставить этот запрос работать быстрее

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

$result = mysql_query("select
(select count(1) FROM videos WHERE title LIKE '%Cars%')as Cars,
(select count(1) FROM videos WHERE title LIKE '%Bikes%') as 'Bikes',
(select count(1) FROM videos WHERE title LIKE '%Airplanes%') as 'Airplanes',
(select count(1) FROM videos WHERE title LIKE '%Trucks%') as 'Trucks',
(select count(1) FROM videos WHERE title LIKE '%Games%') as 'Games'");

$row = mysql_fetch_assoc($result);

foreach($row as $title => $total)
{
echo '<li>
<a href="search.php?search='. $title . '&submit= ">'. $title.'&nbsp;&nbsp;'. $total .'</a></li>';
}

echo '<li class="spaceIN"></li><li class="letter">A</li>';

Я делаю копию этого скрипта и вставляю его 100 раз, и после этого загрузка происходит очень медленно.

3

Решение

Как это

select sum(title LIKE '%Cars%') as cars,
sum(title LIKE '%Bikes%') as bikes
from videos
4

Другие решения

Наряду с предложениями SQL в других ответах — как насчет того, чтобы вместо того, чтобы запускать этот запрос каждый раз, когда кто-то посещает эту страницу (при условии, что так и происходит), — вместо этого храните счетчики в базе данных и выполняйте задание Cron, чтобы запускать скрипт для их регулярного обновления на заднем фоне. Затем запросите сохраненный счетчик на этой странице — что, очевидно, будет значительно быстрее

1

Вы можете заменить ваши встроенные запросы в select список с sum функции над логическими выражениями:

SELECT SUM (title LIKE '%Cars%') as Cars,
SUM (title LIKE '%Bikes%') as 'Bikes',
SUM (title LIKE '%Airplanes%') as 'Airplanes',
SUM (title LIKE '%Trucks%') as 'Trucks',
SUM (title LIKE '%Games%') as 'Games'
FROM   videos
0

Добавление столбца категории, int или enum, зависит от того, как часто вы добавляете / меняете категории. Вы можете использовать:

SELECT COUNT(*) as c, category FROM videos GROUP BY category;

затем. Вааааа, лучше иметь определенные категории, чем делать строковые вещи в каждом запросе. Кроме того, «%» в начале очень медленный, поскольку не может использовать индексы.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector