Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySql कंपोजिट इंडेक्स

यह आपकी पहली क्वेरी है:

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;

इसे बेहतर तरीके से लिखा जाता है:

      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;

इस पर सबसे अच्छा सूचकांक शायद है:campaign_logs(domain, campaign_id, log_type, log_time, subscriber_id) . यह क्वेरी के लिए एक कवरिंग इंडेक्स है। पहली तीन कुंजियों का उपयोग where . के लिए किया जाना चाहिए छानना



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel 5 Eloquent HasManyThrough - लिंक में नाम कॉलम

  2. MySQL संग्रहीत प्रक्रिया, एकाधिक कर्सर और क्वेरी परिणामों को संभालना

  3. अजगर के साथ MySQL डेटाबेस बनाएं

  4. MySQL रूट पासवर्ड कैसे निकालें

  5. बाहरी mysql डेटाबेस को php . से जोड़ना