2012-04-14 3 views
0

Давайте предположим, что у меня есть этот запрос будетполучить подсчитывать результаты сложного запроса

SELECT max(times_viewed) as m, member_id, (select count(viewed_url) from exp_member_page_tracker where member_id=mpv.member_id) 
FROM `exp_member_page_tracker` mpv 
group by member_id 

Мне нужно подсчитать все результаты. Я делаю это по этому пути

SELECT count(member_id) from (SELECT max(times_viewed) as m, member_id, (select count(viewed_url) from exp_member_page_tracker where member_id=mpv.member_id) 
FROM `exp_member_page_tracker` mpv 
group by member_id) as m2 

Но я не уверен, как это эффективно. Не могли бы вы предложить мне, как я могу наилучшим образом подсчитать результаты?

Благодаря

+0

почему вы так думаете? – hjpotter92

+0

Я думаю, если скажут 1 миллион записей, он выберет этот миллион записей и затем посчитает. Я ошибаюсь? –

ответ

1

Для вашего подзапроса, я что-то отсутствует, не это же результат с более практичность? судимое в sqlfiddle:

http://sqlfiddle.com/#!2/a03cf/9

Yours:

SELECT member_id, max(times_viewed) as max_times_viewed 
, (select count(viewed_url) from exp_member_page_tracker where member_id=mpv.member_id) as countOfViewedUrl 
FROM `exp_member_page_tracker` mpv 
group by member_id; 

Альтернатива:

SELECT member_id, max(times_viewed) as max_times_viewed 
, count(viewed_url) as countOfViewedUrl 
FROM `exp_member_page_tracker` mpv 
group by member_id; 
Смежные вопросы