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

Postgresql - enable_nestloop=false के साथ क्वेरी बहुत तेजी से चल रही है। योजनाकार सही काम क्यों नहीं कर रहा है?

यदि क्वेरी प्लानर उप-इष्टतम क्वेरी प्लान चुनता है, तो संभावना है कि उसके पास काम करने के लिए अधूरी या भ्रामक जानकारी है।

यह देखें PostgreSQL विकी पेज सर्वर ट्यूनिंग पर। विशेष रूप से random_page_cost . के अध्यायों पर ध्यान दें और default_statistics_target .
सांख्यिकी पर मैनुअल में संबंधित अध्याय भी पढ़ें नियोजक द्वारा उपयोग किया जाता है और प्लानर लागत स्थिरांक

अधिक विशेष रूप से, यह statistics target को बढ़ाने में मदद कर सकता है निम्नलिखित कॉलम के लिए:

ALTER TABLE postgres.products ALTER COLUMN id SET STATISTICS 1000;
ALTER TABLE postgres.sales_orders ALTER COLUMN retailer_id SET STATISTICS 1000;
ALTER TABLE postgres.sales_orders ALTER COLUMN company_id SET STATISTICS 1000;

ALTER TABLE goods_return_notes ALTER COLUMN retailer_id SET STATISTICS 1000;
ALTER TABLE goods_return_notes ALTER COLUMN company_id SET STATISTICS 1000;

ALTER TABLE retailer_category_leaf_nodes ALTER COLUMN tree_left SET STATISTICS 1000;
ALTER TABLE channels ALTER COLUMN principal_id SET STATISTICS 1000;

ये फ़िल्टर में शामिल होते हैं जिसके परिणामस्वरूप

और हैं . हर कॉलम की जाँच करें जहाँ प्लानर अनुमान से बहुत अधिक विचलन करता है। डिफ़ॉल्ट केवल 100 है। केवल>> 1000 पंक्तियों वाली तालिकाओं के लिए समझ में आता है। सेटिंग के साथ प्रयोग करें। ANALYZEचलाएं परिवर्तनों को प्रभावी करने के लिए बाद में तालिकाओं पर।

यह आंशिक अनुक्रमणिका . बनाने में भी मदद कर सकता है पर postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL (इस पर निर्भर करता है कि NULL मान कितने सामान्य हैं)।

एक और चीज जो आपकी मदद कर सकती है वह है अपग्रेड नवीनतम संस्करण 9.1 के लिए। इस क्षेत्र में कई महत्वपूर्ण सुधार हुए हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ActiveRecord update_all और रेल 4 के साथ एक सम्मिलित तालिका को थोक अद्यतन करना

  2. PLpgSQL फ़ंक्शन मेल खाने वाले शीर्षक नहीं लौटा रहा है

  3. जांचें कि पोस्टग्रेज़ तालिका में रिकॉर्ड मौजूद हैं या नहीं

  4. PostgreSQL लेनदेन में लंबित संचालन की जांच कैसे करें

  5. टाइमज़ोन जागरूक डेटाटाइम स्ट्रिंग करने के लिए?