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

जब WHERE में चर होते हैं तो MySQL क्वेरी इंडेक्स का उपयोग नहीं करती है

सबसे संभावित स्पष्टीकरण यह है कि कॉलम nodo वर्ण डेटाटाइप है, और character_set_connection कॉलम के लिए निर्दिष्ट वर्ण सेट से मेल नहीं खाता।

अगर कॉलम को latin1 . से परिभाषित किया गया है कैरेक्टरसेट, कोशिश करें:

WHERE nodo = CONVERT(@sitio USING latin1)

एक प्रदर्शन के रूप में, utf8 के साथ, आउटपुट की व्याख्या करें कि कोई अनुक्रमणिका उपलब्ध नहीं है:

EXPLAIN SELECT t.* FROM mytable t WHERE t.foo = CONVERT(@foo USING utf8)
                                                                  ^^^^
id select_type table type possible_keys key    key_len ref    rows Extra        
-- ----------- ----- ---- ------------- ------ ------- ------ ---- -----------
 1 SIMPLE      t     ALL  (NULL)        (NULL) (NULL)  (NULL)    3 Using where

लेकिन लैटिन 1 के साथ, आउटपुट शो इंडेक्स उपलब्ध है (और इसका उपयोग किया जाता है) की व्याख्या करें:

EXPLAIN SELECT t.* FROM mytable t WHERE t.foo = CONVERT(@foo USING latin1)
                                                                  ^^^^^^    
id select_type table type possible_keys key    key_len ref    rows Extra        
-- ----------- ----- ---- ------------- ------ ------- ------ ---- -----------
 1  SIMPLE     t     ref  t_ix          t_ix   13      const     1 Using 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. मैं उस तालिका के लिए एसक्यूएल कैसे लिख सकता हूं जो MySQL में संरक्षित कीवर्ड के समान नाम साझा करता है?

  2. MySql.Data.MySqlClient.MySqlException:"होस्ट लोकलहोस्ट एसएसएल कनेक्शन का समर्थन नहीं करता है।"

  3. php स्क्रिप्ट में इष्टतम MYSQL क्वेरी संख्या क्या है?

  4. MySQL - चयन क्वेरी के आधार पर अद्यतन क्वेरी

  5. रेल एक (छद्म) नेस्टेड लेनदेन में रोलबैक को अनदेखा क्यों करता है?