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

माई एसक्यूएल। वर्डप्रेस। IN कथनों का उपयोग करते समय धीमी क्वेरी

जिस "समाधान" पर मैंने अभी ठोकर खाई है, वह बहुत बदसूरत है, लेकिन कुछ अकथनीय कारणों से, यह काम करता है। STRAIGHT_JOIN जोड़ना ऑप्टिमाइज़र हिंट ने निष्पादन समय को 18+ सेकंड से घटाकर लगभग 0.0022 सेकंड कर दिया। सामान्य ज्ञान और इस प्रश्न के आधार पर (MySQL के साथ STRAIGHT_JOIN का उपयोग कब करें ), यह समाधान एक बुरे विचार की तरह लगता है, लेकिन यह एकमात्र चीज है जिसे मैंने आजमाया है जिसने काम किया है। इसलिए, कम से कम अभी के लिए, मैं इस पर कायम हूं। अगर किसी के पास कोई विचार है कि मुझे ऐसा क्यों नहीं करना चाहिए, या इसके बजाय मुझे क्या प्रयास करना चाहिए, तो मुझे उन्हें सुनना अच्छा लगेगा।

अगर कोई उत्सुक है, तो मैंने इसे वर्डप्रेस फ़िल्टर के रूप में लागू किया है:

function use_straight_join( $distinct_clause ) {

    $distinct_clause = ( $use_straight_join ) ? 'STRAIGHT_JOIN' . $distinct_clause : $distinct_clause;

    return $distinct_clause;
}
add_filter( 'posts_distinct', 'use_straight_join' );

और पूर्णता के लिए, यहाँ EXPLAIN है STRAIGHT_JOIN . का उपयोग करते समय क्वेरी के लिए आउटपुट . फिर से, मैं चकित हूँ। पुरानी क्वेरी में केवल ref का उपयोग किया गया था और eq_ref जिसे मैं range . से तेज समझता हूं , लेकिन यह किसी कारण से तेजी से परिमाण का क्रम है।

+-----+--------------+------------------------+--------+---------------------------+-------------------+----------+-----------------+-------+----------------------------------------------+
| id  | select_type  |         table          | type   |      possible_keys        |       key         | key_len  |      ref        | rows  |                    Extra                     |
+-----+--------------+------------------------+--------+---------------------------+-------------------+----------+-----------------+-------+----------------------------------------------+
|  1  | SIMPLE       | wp_posts               | range  | PRIMARY,type_status_date  | type_status_date  |     124  | NULL            |    6  | Using where; Using temporary; Using filesort |
|  1  | SIMPLE       | wp_postmeta            | ref    | post_id,meta_key          | post_id           |       8  | db.wp_posts.ID  |    2  | Using where                                  |
|  1  | SIMPLE       | mt1                    | ref    | post_id,meta_key          | post_id           |       8  | db.wp_posts.ID  |    2  | Using where                                  |
|  1  | SIMPLE       | mt2                    | ref    | post_id,meta_key          | post_id           |       8  | db.wp_posts.ID  |    2  | Using where                                  |
|  1  | SIMPLE       | mt3                    | ref    | post_id,meta_key          | post_id           |       8  | db.wp_posts.ID  |    2  | Using where                                  |
|  1  | SIMPLE       | mt4                    | ref    | post_id,meta_key          | post_id           |       8  | db.wp_posts.ID  |    2  | Using where                                  |
|  1  | SIMPLE       | mt5                    | ref    | post_id,meta_key          | post_id           |       8  | db.mt3.post_id  |    2  | Using where                                  |
|  1  | SIMPLE       | mt6                    | ref    | post_id,meta_key          | post_id           |       8  | db.wp_posts.ID  |    2  | Using where                                  |
|  1  | SIMPLE       | wp_term_relationships  | ref    | PRIMARY,term_taxonomy_id  | PRIMARY           |       8  | db.wp_posts.ID  |    1  | Using where; Using index                     |
|  1  | SIMPLE       | tt1                    | ref    | PRIMARY,term_taxonomy_id  | PRIMARY           |       8  | db.wp_posts.ID  |    1  | Using where; Using index                     |
|  1  | SIMPLE       | tt2                    | ref    | PRIMARY,term_taxonomy_id  | PRIMARY           |       8  | db.mt1.post_id  |    1  | Using where; Using index                     |
|  1  | SIMPLE       | tt3                    | ref    | PRIMARY,term_taxonomy_id  | PRIMARY           |       8  | db.wp_posts.ID  |    1  | Using where; Using index                     |
+-----+--------------+------------------------+--------+---------------------------+-------------------+----------+-----------------+-------+----------------------------------------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL PHP उत्पन्न तालिका:Tablesorter के साथ काम नहीं करता है

  2. MYSQL में क्वेरी का उपयोग करके 2 वर्णों के बीच के टेक्स्ट को कैसे हटाएं

  3. कौन सी क्वेरी अधिक प्रदर्शनकारी है?

  4. पंक्ति डालें VB.NET MySQL पर अंतिम आईडी (पहचान) लौटाएं

  5. com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:autocommit=true होने पर रोलबैक को कॉल नहीं कर सकता