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

संबंधपरक प्रश्नों के साथ संयुक्त पोस्टग्रेज jsonb प्रश्नों के प्रदर्शन में सुधार

आपकी धीमी क्वेरी सभी 44255 पंक्तियों के लिए बड़े jsonb डेटा को नष्ट कर रही है, और फिर शीर्ष 20 पंक्तियों को चुनने के लिए पार्स किए गए मानों को सॉर्ट के माध्यम से ले जा रही है। (मुझे नहीं पता कि यह डीटोस्टिंग इतनी उत्सुकता से क्यों करता है)। तो 44235 JSONB को सिर्फ फेंके जाने के लिए डिटोस्ट किया गया।

आपकी तेज़ क्वेरी (संभवतः) हैश जॉइन से टोस्ट पॉइंटर्स लौटा रही है, उन छोटे पॉइंटर्स के साथ पंक्तियों को सॉर्ट कर रही है, और फिर केवल 20 बचे हुए लोगों को हटा रही है। EXPLAIN ANALYZE के मामले में, यह बचे हुए लोगों को भी नहीं हटाता है, यह केवल पॉइंटर्स को दूर फेंक देता है।

यही "क्यों" है, इसके बारे में क्या करना है, यदि आप वास्तव में शीर्ष भाग के नीचे किसी भी क्वेरी को बदल नहीं सकते हैं, तो मुझे संदेह है कि सर्वर साइड पर आप इसके बारे में कुछ भी कर सकते हैं।

यदि आप क्वेरी को अधिक महत्वपूर्ण रूप से संशोधित कर सकते हैं, तो आप सीटीई के साथ रन टाइम में सुधार कर सकते हैं। CTE से पूरे jsonb का चयन करने के लिए कहें, और फिर CTE पर सेलेक्ट करने से उसमें से मान निकल जाता है।

WITH T as (select cfiles.property_values as "1907", <rest of query>) 
SELECT "1907"->>'name1', "1907"->>'name2', <rest of select list> from T;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL के लिए कैशिंग का अवलोकन

  2. ओवरलैपिंग दिनांक सीमाओं से अलग लगातार दिनांक सीमाएं प्राप्त करें

  3. SQL में प्रतिशत/कुल कैसे करें?

  4. जूक - पोस्टग्रेज UNIQUE बाधा को पहचानने में समस्या

  5. PostgreSQL में स्केल () फ़ंक्शन कैसे काम करता है