2013-06-13 5 views
0

Мне нужно знать, что является самым быстрым способом подсчета строк представлений в соответствии с каждым продуктом. Я попытался запустить запрос, соединяя его между двумя таблицами. A 'product_db' и 'product_views'. Но для завершения запроса потребовалось около минуты.Каков самый быстрый способ подсчета количества строк в mySQL

Вот мой код:

select *, 
count(product_views.vwr_id) as product_viewer, 
from product_db 
inner join product_viewer on product_db.id=product_views.vwr_cid 
where product_id='$pid' order by id desc 

Где $ Pid 'является идентификатор продукта.

Это моя таблица товаров product_views.

enter image description here

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

С уважением,

+0

Почему вы используете агрегатную функцию без GROUP BY? Вы понимаете, что это не даст вам правильный результат? – Taryn

+0

Если вы опускаете функцию count, все равно требуется такое же количество времени для запуска? Я думаю, вам может понадобиться индексировать ваши таблицы. Запустите тот же код с помощью EXPLAIN, и он может дать вам подсказку. Или опубликуйте результаты здесь, и мы можем помочь. – Tom

+0

@bluefeet, я пробовал либо с, либо без группы. И результат не меняется - он все еще медленный. – Wilf

ответ

0

Это звучит как ваш запрос медленно, а не подсчет. Две вещи, которые вы могли бы попробовать:

  1. Убедитесь, что в поле product_id указан указатель.
  2. Если product_id является числовым полем, удалите одинарные кавычки вокруг него. Другими словами, измените это where product_id='$pid' на это where product_id=$pid. MySQL может делать преобразование в поле product_id, чтобы преобразовать его в строку для сравнения и игнорировать индекс, если он существует.
Смежные вопросы