以下是对SQL语句进行优化的建议:

  1. 将子查询改为使用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;
  1. 使用表别名来提高查询语句的可读性,这样可以更清楚地指定每个表的作用。
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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录