Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с пагинацией!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
ensik
Отправлено: 08 Октября, 2012 - 12:32:56
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Здравствуйте форумчане! Нужна Ваша помощь с оптимизацией пагинации!
Проблема: очень долго считает количество строк в таблице.

Сейчас считаю так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT COUNT(id) AS count FROM `refs`");
  3. $row = mysql_fetch_assoc($result);
  4. $rows_max = $row['count'];
  5.  


В таблице всего 3 поля, но очень много записей (около 70000). Как с этим быть? Кто сталкивался?

Модераторы - извините, может не туда тему сунул.

(Отредактировано автором: 08 Октября, 2012 - 12:34:54)

 
 Top
eai
Отправлено: 08 Октября, 2012 - 12:41:02
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




На 70000 должно считать быстро, есть ли индексы ? попробуй count(*)
 
 Top
ensik
Отправлено: 08 Октября, 2012 - 13:07:09
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Попробовал, результатов не дало.
 
 Top
eai
Отправлено: 08 Октября, 2012 - 13:08:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




А индексы то есть ?
 
 Top
caballero
Отправлено: 08 Октября, 2012 - 13:09:40
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
попробуй count(*)

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

проверь что там индекс стоит на id
не может долго считать на индексном поле

или может где еще тормоза


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
eai
Отправлено: 08 Октября, 2012 - 13:10:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




caballero пишет:
Цитата:
попробуй count(*)

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


Где то читал что иногда count(*) быстрее работает
 
 Top
tuareg
Отправлено: 08 Октября, 2012 - 18:07:20
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Ваш запрос не может тормозить по любому, если это тот запрос, т.к практически даже запроса то и нет. Количество строчек хранится в самой структуре.
Я может что-то и напутал с определениями. Вам поможет EXplain Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 08 Октября, 2012 - 18:32:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




tuareg пишет:
Количество строчек хранится в самой структуре.

Только MyISAM. InnoDB из-за своей транзакционной сущности (реализован MVCC) не может знать, сколько есть строк, пока не прочитает их. Но по индексу считаются всё равно очень быстро. Всего-то 70тыс. записей.


-----
PostgreSQL DBA
 
 Top
tuareg
Отправлено: 08 Октября, 2012 - 19:29:55
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Я просто думаю, что там MyISAM. А так да Вы абсолютно правы
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB