SELECT pm.team,
pm.username,
count(DISTINCT if(offer_pm.revenue>0.0,adv.adv_name,NULL)) AS adv_count,
sum(offer_pm.click),
sum(offer_pm.install),
sum(offer_pm.revenue),
sum(offer_pm.cost)
FROM (pm pm
INNER JOIN offer_pm_adv_day offer_pm ON offer_pm.pm_id=pm.id)
INNER JOIN advertiser adv ON offer_pm.adv_id=adv.id
WHERE offer_pm.logdate>='2016-01-01'
AND offer_pm.logdate<='2017-01-01'
GROUP BY pm.team,
pm.username
Если есть где условие offer_pm.logdate>='2016-01-01' and offer_pm.logdate<='2017-01-01'
ниже это объяснить для SQL. И время стоимость долго (20s)Mysql внутреннее соединение с где
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: offer_pm
type: range
possible_keys: PRIMARY,adv_id_index,logdate_index
key: PRIMARY
key_len: 3
ref: NULL
rows: 713003
Extra: Using where; Using temporary; Using filesort -->Useing where
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: pm
type: eq_ref
possible_keys: PRIMARY,uniq_name_team
key: PRIMARY
key_len: 4
ref: summary_report_refactor2.offer_pm.pm_id
rows: 1
Extra: Using where
*************************** 3. row ***************************
id: 1
select_type: SIMPLE
table: adv
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: summary_report_refactor2.offer_pm.adv_id
rows: 1
Extra: Using where
Но SQL
SELECT pm.team,
pm.username,
count(DISTINCT if(offer_pm.revenue>0.0,adv.adv_name,NULL)) AS adv_count,
sum(offer_pm.click),
sum(offer_pm.install),
sum(offer_pm.revenue),
sum(offer_pm.cost)
FROM (pm pm
INNER JOIN offer_pm_adv_day offer_pm ON offer_pm.pm_id=pm.id)
INNER JOIN advertiser adv ON offer_pm.adv_id=adv.id
GROUP BY pm.team,
pm.username
, которые не с где условия.
Время в пути - 2 с. Объяснение:
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: pm
type: index
possible_keys: PRIMARY,uniq_name_team
key: uniq_name_team
key_len: 604
ref: NULL
rows: 91
Extra: Using index; Using filesort
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: offer_pm
type: ref
possible_keys: adv_id_index,pm_id_index
key: pm_id_index
key_len: 4
ref: summary_report_refactor2.pm.id
rows: 10042
Extra: Using index condition
*************************** 3. row ***************************
id: 1
select_type: SIMPLE
table: adv
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: summary_report_refactor2.offer_pm.adv_id
rows: 1
Extra: Using where
BTW, есть индекс в столбце логарифма.
Что ваш вопрос? –
Какой атрибут является столбцом logdate? – tjfo
Пожалуйста, предоставьте 'SHOW CREATE TABLE' для таблиц. –