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

PHP को MySQL क्लाइंट की तुलना में क्वेरी चलाने में 90x अधिक समय लगता है

इस सवाल पर बहुत देर से अपडेट दे रहा हूं:

मुझे कारण नहीं मिला है, लेकिन यह पता चला है कि सीएलआई बनाम PHP में EXPLAIN अलग था। मुझे यकीन नहीं है कि कनेक्शन का कोई पहलू MySQL को इंडेक्स के लिए एक अलग फ़ील्ड का उपयोग करने का कारण बनता है, क्योंकि जहां तक ​​​​मुझे पता है कि उन चीजों से संबंधित नहीं होना चाहिए; लेकिन अफसोस, PHP के EXPLAIN ने दिखाया कि उचित अनुक्रमणिका का उपयोग नहीं किया जा रहा था, जबकि CLI ने किया था।

इस (चकित) मामले में समाधान इंडेक्स हिंटिंग का उपयोग करना है। . मेरे उदाहरण से इस संशोधित क्वेरी में 'FROM' लाइन देखें:

SELECT HEX(al.uuid) hexUUID, al.created_on,
    IFNULL(al.state, 'ON') actionType, pp.publishers_id publisher_id,
    pp.products_id product_id, al.action_id, al.last_updated
FROM ActionAPI.actionLists al USE INDEX (created_on)
LEFT JOIN ActionAPI.publishers_products pp
    ON al.publisher_product_id = pp.id
WHERE (al.test IS NULL OR al.test = 0)
    AND (al.created_on >= :since OR al.last_updated >= :since)
ORDER BY created_on ASC
LIMIT :skip, 100;

आशा है कि यह किसी की मदद करेगा!



  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 LOAD_FILE () शून्य मान लोड करता है

  2. 'तारीख जोड़ा' के लिए अमान्य डिफ़ॉल्ट मान

  3. कैसे जांचें कि डेटाबेस में कोई टेबल या कॉलम मौजूद है या नहीं?

  4. Mysql में विशिष्ट दिनांक प्रारूप

  5. MySQL में सेलेक्ट INTO और INSERT INTO के बीच अंतर