|
|
|
|
|
для: Dota
(08.08.2008 в 17:18)
| | вместо ноля, я так понял, вам нужно подставлять количество хостов у сайта, для которого требуется определить положение в рейтинге | |
|
|
|
|
|
|
|
для: mechanic
(08.08.2008 в 15:57)
| | Запрос
select count(*) as position from base_top where tod_host > 0 order by tod_host desc
|
возвращает количество сайтов у которых tod_host>0... А дальше? | |
|
|
|
|
|
|
|
для: Dota
(08.08.2008 в 15:36)
| | создать массив с адресами сайтов для вычисления рейтинга, прогонять массив каждым способом, делая замер времени работы скрипта..
способы например такие:
- запрос с count(*)
- запрос с * с последующей обработкой в пхп | |
|
|
|
|
|
|
|
для: mechanic
(07.08.2008 в 10:37)
| | На tod_host индекс есть. А как можно провести замеры производительности? | |
|
|
|
|
|
|
|
для: DjDance
(07.08.2008 в 09:00)
| | >начиная добавлять в него count(), MAX(), MIN() и т.д. ты только будешь его замедлять
а то, что запрос выбирает кучу ненужных рядов, это ничего? если запрошенный сайт в самом низу рейтинга, выберется вся таблица! причем она еще и сортируется! и НЕ ПО КЛЮЧУ!
на tod_host рекомендуется сделать индекс, а запрос написать так
select count(*) as position from base_top where tod_host > 0 order by tod_host desc
ради интереса также можно провести замеры производительности | |
|
|
|
|
|
|
|
для: Dota
(07.08.2008 в 07:59)
| | Простой SELECT, как этот работает быстрее всего. А вот начиная добавлять в него count(), MAX(), MIN() и т.д. ты только будешь его замедлять, причем при большой ДБ в десятки раз (сам на этом попался в свое время). Так что ничего лучше и надежнее простых запросов нет. :)
Да, и в коде лучше убрать лишние кавычки, они не нужны, типа if ($iidd == "$count") заменить на if ($iidd == $count). | |
|
|
|
|
|
|
| Вычисляем место в рейтинге...
$count=$id_site; //id сайта в базе.
$ttop=1;
$result=mysql_query("SELECT id FROM base_top WHERE tod_host>0 ORDER BY tod_host DESC");
while ($row = mysql_fetch_array($result) ) {
$iidd=$row["id"];
if ($iidd=="$count") {$top_me="$ttop";}
$ttop++;
}
|
Переменная $top_me = место сайта в рейтинге по количеству tod_host (хостов сегодня).
Я знаю, что код не логичный и не правильный. Но более ничего придумать не мог. Можно ли сделать запрос к базе более корректный? Посредством count() к примеру. | |
|
|
|
|