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

स्टेटमेंट की तुलना में तैयार किए गए स्टेटमेंट के साथ क्वेरी बहुत धीमी है

आपका तैयार विवरण full_address . को कास्ट करता है text . में (पोस्टग्रेज बिल्ट-इन टेक्स्ट टाइप), जबकि ऐसा लगता है कि आपकी टेबल एक citext के साथ बनाई गई है (केस-असंवेदनशील) टेक्स्ट प्रकार (या, आपके पास full_address::text पर एक इंडेक्स की कमी है ) शायद full_address::text . पर एक अनुक्रमणिका बनाने का प्रयास करें और देखें कि क्या आपका तैयार बयान इसे उठाएगा।

एक अन्य विकल्प text . का उपयोग करना है full_address . के लिए टाइप करें कॉलम, और फिर lower(full_address) . पर एक कार्यात्मक अनुक्रमणिका बनाएं -- उस विकल्प का स्वाद आपकी आवश्यकताओं पर निर्भर करता है।

मुझे लगता है कि समस्या का वह हिस्सा यह है कि JDBC citext . के बारे में नहीं जानता है टाइप करें जब तक कि आप JDBC को डेटाबेस में अपना पता citext . के रूप में भेजने के लिए प्राप्त न कर सकें टाइप करें, इसे क्वेरी प्लानर द्वारा text . के रूप में व्याख्यायित किया जाएगा , ठीक वैसे ही जैसे आपका setString() विधि शायद करता है।

दिलचस्प बात यह है कि मैं हाल ही में इसी तरह की समस्या से जूझ रहा हूं

प्रकटीकरण:मैं EnterpriseDB (EDB) के लिए काम करता हूं




  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. पोस्टग्रेस्क्ल के साथ इन्सर्ट इग्नोर और डुप्लिकेट की अपडेट (एसक्यूएल मर्ज) का अनुकरण कैसे करें?

  4. PostgreSQL में लेनदेन अलगाव

  5. पोस्टग्रेस्क्ल। 'पूर्णांक' के लिए 'चरित्र भिन्न' कास्ट बनाएं