Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Текущая позиция в запросе

Сообщения:  [1-10]   [11-14] 

 
 автор: Ardolix   (17.03.2008 в 02:35)   письмо автору
 
   для: ardolix   (14.03.2008 в 14:37)
 

Спасибо всем!
В первой части задачи использовал идею olejek, а вторую:
SELECT count(*) 
FROM ANKETS a 
WHERE a.anket_type = @USER_ANKET_TYPE a.update_time > @USER_UPDATE_TIME;

   
 
 автор: Ardolix   (14.03.2008 в 18:30)   письмо автору
 
   для: KirillKiev   (14.03.2008 в 17:32)
 

4 секунды это очень много.

Просто многие это используют. Навярняка есть оптимальное решение. К примеру loveplanet - 9,634,061 анкет. каждому авторизированому пользователю всегда показывается какую позицию он в поиске занимает. Причём даже и на всём сайте и в городе. Та же фитча и на мамбе и 24open.

   
 
 автор: KirillKiev   (14.03.2008 в 17:32)   письмо автору
 
   для: Ardolix   (14.03.2008 в 17:23)
 

незнаю... что будет в данном случае у меня 150000 строк обрабатывало 4 секунды
не... все таки эта лажа нужно еще искать с нумерацией строк
у меня просто ощущение, что не существует в мускуле нумерации строк вне определенного набора
а набор нужно выполнить весь, что бы получить данную нумерацию
может кто то еще чего посоветует

   
 
 автор: Ardolix   (14.03.2008 в 17:23)   письмо автору
 
   для: KirillKiev   (14.03.2008 в 17:04)
 

А если эта миллионая позиция, то как поступить?

   
 
 автор: KirillKiev   (14.03.2008 в 17:04)   письмо автору
 
   для: olejek   (14.03.2008 в 16:55)
 

Хех
тока что обнаружил еще один вариант, правда непроверял в php а напрямую в мускуле
использование переменных мускула
пример

set @x=0;
select
(@x:=@x+1) as n,
`countryId` 
from
`BidsActiv`
group by countryId
having countryId = 4

тогда иду соответствующему в данном случае 4 будет соответствовать номер 3
ну в моей таблице
http://www.weblibrary.biz/mysql/struktura/peremennye

   
 
 автор: olejek   (14.03.2008 в 16:55)   письмо автору
 
   для: Ardolix   (14.03.2008 в 16:48)
 

Ну, тогда остается тот вариант, который Вы описали сначала. Хотя он какой-то кривой.
Может, кто еще что-нибудь придумает.

   
 
 автор: Ardolix   (14.03.2008 в 16:48)   письмо автору
 
   для: olejek   (14.03.2008 в 16:38)
 

В вашем случае, конечно, отличное решение. Дело в том, что оно не отображаеться списком всех пользоаателей, а для каждого в частности. Для этого, пересчитывать при каждом отображении (обычно это на каждой странице, что достаточно часто), дало бы высокую нагрузку.

   
 
 автор: KirillKiev   (14.03.2008 в 16:46)   письмо автору
 
   для: olejek   (14.03.2008 в 16:43)
 

не заметил сори

   
 
 автор: olejek   (14.03.2008 в 16:43)   письмо автору
 
   для: KirillKiev   (14.03.2008 в 16:40)
 

Ух, ты, KirillKiev! Мы с вами мыслим почти одинаково! Только зачем же два раза $i++?

   
 
 автор: KirillKiev   (14.03.2008 в 16:40)   письмо автору
 
   для: olejek   (14.03.2008 в 16:38)
 

ну если через скрипт довавьте

$i = 0;
 while ($qr = mysql_fetch_array($query))
      {
      echo $qr['name']." - Ваша позиция - ".$i++;
      $i++;
      } 

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования