Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chỉ mục tổng hợp MySql

Đây là truy vấn đầu tiên của bạn:

SELECT A.log_type, count(*) as distinct_count, sum(A.total_count) as total_count
from (SELECT log_type, count(subscriber_id) as total_count
      FROM stats.campaign_logs
      WHERE domain = 'xxx' AND campaign_id = '12345' AND
            log_type IN ('EMAIL_SENT', 'EMAIL_CLICKED', 'EMAIL_OPENED', 'UNSUBSCRIBED') AND
             DATE(CONVERT_TZ(log_time,'+00:00','+05:30')) BETWEEN DATE('2015-02-12 00:00:00') AND DATE('2015-02-19 23:59:58')
      GROUP BY subscriber_id,log_type) A
GROUP BY A.log_type;

Tốt hơn nên viết là:

      SELECT log_type, count(DISTINCT subscriber_id) as total_count
      FROM stats.campaign_logs
      WHERE domain = 'xxx' AND campaign_id = '12345' AND
            log_type IN ('EMAIL_SENT', 'EMAIL_CLICKED', 'EMAIL_OPENED', 'UNSUBSCRIBED') AND
             DATE(CONVERT_TZ(log_time, '+00:00', '+05:30')) BETWEEN DATE('2015-02-12 00:00:00') AND DATE('2015-02-19 23:59:58')
      GROUP BY log_type;

Chỉ mục tốt nhất về vấn đề này có lẽ là:campaign_logs(domain, campaign_id, log_type, log_time, subscriber_id) . Đây là một chỉ mục bao trùm cho truy vấn. Ba khóa đầu tiên nên được sử dụng cho where sự lọc.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cây đệ quy đơn giản trong PHP / MySQL

  2. Làm cách nào để viết một tìm kiếm MySQL có thể bù đắp cho dữ liệu sai chính tả?

  3. Cách tốt nhất để so sánh / chèn / cập nhật các sản phẩm trong db MySQL từ tệp .CSV là gì

  4. Báo cáo chuyên cần trong MySql

  5. Làm cách nào để làm chậm kết xuất MySQL để không ảnh hưởng đến tải hiện tại trên máy chủ?