Нужно ли проводить подсчет данных заранее, а не на лету?

golos81

Новичок
Нужно ли проводить подсчет данных заранее, а не на лету?

Почти на всех страницах сайта при загрузке странице загружается список из 10 записей. Этот список - это TOP 10 самых популярных записей в базе. Например, есть таблица учеников. Мы строим TOP 10 учеников с самыми популярными именами.


Сейчас TOP 10 определяется следующим образом:
SELECT `students`.`Names`, count(`Names`) AS Number,
...
GROUP BY `Names`
ORDER BY Number DESC
LIMIT 10";

Вопросы:
1. имеет ли смысл определять этот TOP 10 заранее, например, раз в сутки, записывать данные в таблицу и при загрузке страницы брать по ТОПУ данные из таблицы. Ну т.е. не сильно ли грузит сервер то, что при загрузке страницы каждый раз происходит этот подсчет самых популярных 10 имен? Или я зря волнуюсь:)?
2. Сам запрос верный? Может его можно как-то оптимизировать?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
golos81, твой вопрос не имеет ответа - ты сам должен проверить, за это тебе и платят (или будут).
 

DiMA

php.spb.ru
Команда форума
1. думаю не стоит, оптимизация твоей лилипутской базы (раз такой вопрос появился) не даст ничего

мыскль сам с успехом закеширует твой запрос, пока он не изменится (или данные в таблице)

если же надо закешировть запрос, то какие проблемы? Быстрее код написать, чем вопрос размещать =)

if ($conf['top10time']<time()) {
loadconf('lock');
$conf['top10time']<time()) {
$conf[top10]=выполнить sql запрос;
$conf[top10time]=time()+86600;
}
saveconf()
}
показать запрос


2. создай индекс по указанным колонкам


grigori
че за..? Ты же в форуме, а не на бирже дудра .-)
 

golos81

Новичок
Автор оригинала: grigori
golos81, твой вопрос не имеет ответа - ты сам должен проверить, за это тебе и платят (или будут).
Насчет сам проверить - это я согласен. А как это можно сделать? Т.е. наверное какой-то командой в freebsd можно посмотреть загрузку процессора?
 
Сверху