MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

पोस्टग्रेएसक्यूएल और मोंगोडीबी जहां शर्तों में हैं

क्वेरी निष्पादन समय में अंतर इसलिए है क्योंकि पहले निष्पादन को डिस्क से अधिक 8kB ब्लॉक पढ़ना पड़ता है:तुलना करें shared read=631496 और shared read=30359

PostgreSQL WHERE . के लिए अनुक्रमणिका का उपयोग नहीं करने का निर्णय लेता है शर्त, लेकिन सूचकांक जो ORDER BY . का समर्थन करता है . ध्यान दें कि IN . के कारण WHERE . दोनों के लिए एक इंडेक्स का उपयोग करना संभव नहीं है शर्त और ORDER BY - यह केवल WHERE . के लिए ही संभव है शर्तें जो = . का उपयोग करती हैं तुलना ऑपरेटर के रूप में।

तो PostgreSQL को एक विकल्प बनाना है, और यह शायद गलत बनाता है:चूंकि इसके आंकड़े अनुकूलक को बताते हैं कि कई पंक्तियां हैं जो WHERE को संतुष्ट करती हैं शर्त, यह ORDER BY . में पंक्तियों को पढ़ने का निर्णय लेता है WHERE . से मेल नहीं खाने वालों को ऑर्डर करें और त्यागें शर्त जब तक कि उसे 100 परिणाम पंक्तियाँ न मिलें। दुर्भाग्य से, ऐसा लगता है कि मेल खाने वाली पंक्तियाँ तालिका की शुरुआत के करीब नहीं हैं, और PostgreSQL को कई पंक्तियों को स्कैन करना है (Rows Removed by Filter: 17276154 )।

इसे WHERE . के लिए एक इंडेक्स स्कैन का उपयोग करने के लिए शर्त, ORDER BY संशोधित करें खंड ताकि PostgreSQL इसके लिए एक अनुक्रमणिका का उपयोग न कर सके:

ORDER BY datetime + INTERVAL '0 seconds' DESC

चूंकि यहां बहु-स्तंभ अनुक्रमणिका का कोई उपयोग नहीं है, इसलिए सर्वोत्तम अनुक्रमणिका होगी

CREATE INDEX ON report (sensor_id);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. अगर मोंगोडब एग्रीगेशन में कंडीशन हो तो

  2. नेवला:क्या एक कस्टम _id को एक इंडेक्स के रूप में घोषित करने और अद्वितीय होने की आवश्यकता है

  3. जावा मोंगो डीबी ड्राइवर संस्करण 3 के साथ एक बेसिकडीबीऑब्जेक्ट को मोंगो दस्तावेज़ में कैसे परिवर्तित करें?

  4. मोंगो संग्रह के माध्यम से लूप करें और प्रत्येक दस्तावेज़ में एक फ़ील्ड अपडेट करें

  5. $ मौजूद ऑपरेटर के साथ फ़ील्ड के अस्तित्व की जांच करते समय मोंगोडीबी इंडेक्स का उपयोग कर सकता है?