SELECT aevent_tracking_name COUNTDISTINCT aagent_code AS visitor_day COUNTaagent_code AS visits_day avisit_date SELECT COUNTDISTINCT bagent_code AS visitor_totle FROM app_hara_visitors_info b WHERE b
以下是对SQL语句进行优化的建议:
- 将子查询改为使用JOIN操作,这样可以减少查询次数并提高性能。
SELECT a.event_tracking_name, COUNT(DISTINCT a.agent_code) AS 'visitor_day', COUNT(a.agent_code) AS 'visits_day', a.visit_date,
COUNT(DISTINCT b.agent_code) AS 'visitor_total', COUNT(c.agent_code) AS 'visits_total'
FROM app_hara_visitors_info a
LEFT JOIN app_hara_visitors_info b ON b.visit_date <= a.visit_date AND b.event_tracking_name = a.event_tracking_name
LEFT JOIN app_hara_visitors_info c ON c.visit_date <= a.visit_date AND c.event_tracking_name = a.event_tracking_name
WHERE a.ed_state = 'E'
GROUP BY a.event_tracking_name, a.visit_date;
- 使用表别名来提高查询语句的可读性,这样可以更清楚地指定每个表的作用。
SELECT a.event_tracking_name, COUNT(DISTINCT a.agent_code) AS 'visitor_day', COUNT(a.agent_code) AS 'visits_day', a.visit_date,
COUNT(DISTINCT b.agent_code) AS 'visitor_total', COUNT(c.agent_code) AS 'visits_total'
FROM app_hara_visitors_info a
LEFT JOIN app_hara_visitors_info b ON b.visit_date <= a.visit_date AND b.event_tracking_name = a.event_tracking_name
LEFT JOIN app_hara_visitors_info c ON c.visit_date <= a.visit_date AND c.event_tracking_name = a.event_tracking_name
WHERE a.ed_state = 'E'
GROUP BY a.event_tracking_name, a.visit_date;
通过以上优化,SQL语句的性能可以得到提升,并且语法更加清晰易懂
原文地址: https://www.cveoy.top/t/topic/h31V 著作权归作者所有。请勿转载和采集!