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

postgresql:ऑफसेट + सीमा बहुत धीमी हो जाती है

इसके बजाय एक कर्सर का प्रयोग करें। OFFSET और LIMIT का उपयोग करना बहुत महंगा है - क्योंकि pg को एक OFFSET पंक्तियों को क्वेरी, प्रोसेस और स्किप करना होता है। OFFSET "स्किप रो" की तरह है, जो महंगा है।

कर्सर दस्तावेज

कर्सर एक क्वेरी पर पुनरावृत्ति की अनुमति देता है।

BEGIN
DECLARE C CURSOR FOR SELECT * FROM big_table;
FETCH 300 FROM C; -- get 300 rows
FETCH 300 FROM C; -- get 300 rows
...
COMMIT;

संभवतः आप DECLARE कथन का स्पष्ट उपयोग किए बिना सर्वर साइड कर्सर का उपयोग कर सकते हैं, बस psycopg<में समर्थन के साथ /ए> (सर्वर साइड कर्सर के बारे में खोज अनुभाग)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वस्तुओं के jsonb सरणी में नेस्टेड प्रमुख मानों के लिए रेंज टेस्ट को गति दें

  2. क्या मैं Postgresql को लेन-देन में त्रुटियों को अनदेखा करने के लिए कह सकता हूँ?

  3. नाइटवॉच कस्टम कमांड कॉलबैक

  4. कमांड लाइन से PostgreSQL क्वेरी चलाएँ

  5. त्रुटि:PostgreSQL COPY का उपयोग करते समय अंतिम अपेक्षित कॉलम के बाद अतिरिक्त डेटा