यदि क्वेरी प्लानर गलत निर्णय लेता है तो यह दो चीजों में से एक है:
<एच3>1. आंकड़े गलत हैं।
क्या आप ANALYZE
run चलाते हैं? बस ए? इसके संयुक्त रूप में भी लोकप्रिय है VACUUM ANALYZE
. अगर ऑटोवैक्यूम चालू है (जो आधुनिक पोस्टग्रेज में डिफ़ॉल्ट है), ANALYZE
स्वचालित रूप से चलाया जाता है। लेकिन विचार करें:
- क्या 9.1 के तहत अब भी नियमित वैक्यूम विश्लेषण की सिफारिश की जाती है?
अगर आपकी टेबल बड़ी है और डेटा वितरण अनियमित है , default_statistics_target
. को बढ़ाना मदद कर सकता है। या इसके बजाय, प्रासंगिक कॉलम के लिए केवल आंकड़े लक्ष्य निर्धारित करें (वे WHERE
. में हैं या JOIN
आपके प्रश्नों के खंड, मूल रूप से):
ALTER TABLE ... ALTER COLUMN ... SET STATISTICS 400; -- calibrate number
<ब्लॉककोट> लक्ष्य 0 से 10000 की सीमा में सेट किया जा सकता है;
ANALYZE
चलाएं उसके बाद फिर से (प्रासंगिक तालिकाओं पर)।
मैनुअल में अध्याय प्लानर लागत स्थिरांक पढ़ें।
अध्यायों को देखें default_statistics_target और random_page_cost इस आम तौर पर सहायक PostgreSQL विकी पृष्ठ पर।
कई अन्य संभावित कारण हैं, लेकिन ये अब तक के सबसे आम कारण हैं।