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

NOT IN . का उपयोग करते समय PostgreSQL क्वेरी धीमी होती है

get_customer_trans() एक टेबल नहीं है - शायद कुछ संग्रहीत प्रक्रिया, इसलिए क्वेरी वास्तव में छोटी नहीं है। आपको यह देखने की आवश्यकता होगी कि यह संग्रहीत कार्यविधि वास्तव में यह समझने के लिए क्या करती है कि यह धीमी गति से क्यों काम कर सकती है।

हालांकि, संग्रहीत कार्यविधि व्यवहार की परवाह किए बिना, निम्नलिखित अनुक्रमणिका को जोड़ने से बहुत मदद मिलनी चाहिए:

CREATE INDEX do_not_email_tbl_idx1
    ON do_not_email_tbl(do_not_email_address);

यह इंडेक्स NOT IN . देता है जल्दी से जवाब वापस करने के लिए क्वेरी। हालांकि, NOT IN पुराने PostgreSQL संस्करणों में समस्याओं के लिए जाना जाता है - इसलिए सुनिश्चित करें कि आप कम से कम PostgreSQL 9.1 या बाद के संस्करण चला रहे हैं।

अपडेट करें . अपनी क्वेरी को इसमें बदलने का प्रयास करें:

SELECT t.*
FROM get_customer_trans() AS t
WHERE NOT EXISTS (
    SELECT 1
    FROM do_not_email_tbl
    WHERE do_not_email_address = t.user_email
    LIMIT 1
)

यह क्वेरी NOT IN . का उपयोग नहीं करती है , और तेजी से काम करना चाहिए। मुझे लगता है कि PostgreSQL 9.2 में इस क्वेरी को उतनी ही तेजी से काम करना चाहिए जितना NOT IN हालांकि।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विदेशी कुंजियों को बदलने के लिए इनहेरिट की गई तालिकाओं पर ट्रिगर का उपयोग करें

  2. स्क्वील में नेस्टेड क्वेरी

  3. पिछले महीने के मानों के साथ परिणाम में लापता महीना जोड़ें

  4. Postgres-XL 9.5 . की दिशा में कार्य करना

  5. JDBC में जावा प्रकार ltree पोस्ट करने के लिए