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 :: MySQL - Создание запроса при помощи count+having [2]

 PHP.SU

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


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

> Без описания
masterlelik
Отправлено: 27 Апреля, 2013 - 23:34:54
Post Id


Новичок


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


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




И все-таки вариант с хэвинг оказывается лучше.
При количестве записей 30000 этот запрос выполняется 2 секунды (да, не очень здорово)
А вот более простой вариант
SELECT DISTINCT `user_id`, COUNT(*) cnt FROM `t_child` WHERE (`cat_id`='2' AND `value` IN ('1','2')) OR (`cat_id`='1' AND `value`='4') GROUP BY user_id

Запрос подвешивается и в пхпмайдмине оно думает и думает. Минут 5 думало, устал ждать, закрыл. Проверил несколько раз - тупо виснет и все.
 
 Top
LIME
Отправлено: 28 Апреля, 2013 - 00:06:18
Post Id


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


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


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




Так добавь хэвинг в чем проблема)))
Можешь 3 штуки добавить)) чтоб еще быстрее
...
Индексы проставь
 
 Top
masterlelik
Отправлено: 28 Апреля, 2013 - 09:03:49
Post Id


Новичок


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


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




LIME пишет:
Так добавь хэвинг в чем проблема)))
Можешь 3 штуки добавить)) чтоб еще быстрее
...
Индексы проставь


Причина была в ином, случайно грохнул связь с одной таблице.
Индексы добавил в паре таблиц, для полей, которые задействованы в поиске.

Итоги по скорости: с хэвинг запрос выполняется 0.2с, без него от 0.35с до 0.85с.
 
 Top
LIME
Отправлено: 28 Апреля, 2013 - 12:02:37
Post Id


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


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


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




интересненько... ну покажи запросы
и учти что они кэшируются
для замеров
SELECT SQL_NO_CACHE * FROM ...

(Отредактировано автором: 28 Апреля, 2013 - 12:12:11)

 
 Top
masterlelik
Отправлено: 28 Апреля, 2013 - 15:38:09
Post Id


Новичок


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


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




сразу скажу 2-й запрос находит какие-то "левые" данные. Если в результатах первого выбрано 17 позиций и все они отвечают фильтрам, то второй выгреб аж 707 позиций!!! И кликнув несколько наугад, вижу, что они не отвечают критериям поиска.

1-й запрос
select filter_id, count(distinct filter_id) as cnt from t_filters_variables where ((filter_id=4 and filter_value=8 or filter_id=4 and filter_value=99) or (filter_id=9 and filter_value=10 or filter_id=9 and filter_value=100 or filter_id=9 and filter_value=101)) group by filter_id having cnt>1 limit 0, 15

2-й запрос
select filter_id from t_filters_variables where ((t5.filter_id='4' and t5.filter_value in (8,99)) or (t5.filter_id='9' and t5.filter_value in (10,100,101))) limit 0, 15
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB