Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Indeks komposit MySql

Ini adalah pertanyaan pertama Anda:

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;

Lebih baik ditulis sebagai:

      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;

Indeks terbaik untuk ini mungkin:campaign_logs(domain, campaign_id, log_type, log_time, subscriber_id) . Ini adalah indeks penutup untuk kueri. Tiga kunci pertama harus digunakan untuk where penyaringan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada perbedaan kinerja NYATA antara kunci utama INT dan VARCHAR?

  2. PDO PHP masukkan ke DB dari array asosiatif

  3. Bagaimana saya bisa membuat tabel analisis kelompok mingguan menggunakan mysql?

  4. Cara Membuat Urutan di MySQL

  5. MySQL tidak dapat dimulai