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

MySQL तुलना से अधिक के लिए किसी अनुक्रमणिका का उपयोग क्यों नहीं करता है?

आप शायद MySQL को क्वेरी प्लान पर निर्णय लेने देना बेहतर समझेंगे। एक अच्छा मौका है कि एक पूर्ण तालिका स्कैन की तुलना में एक इंडेक्स स्कैन करना कम कुशल होगा।

इस तालिका के लिए डिस्क पर दो डेटा संरचनाएं हैं

  1. टेबल ही; और
  2. प्राथमिक कुंजी बी-ट्री इंडेक्स।

जब आप कोई क्वेरी चलाते हैं तो ऑप्टिमाइज़र के पास डेटा तक पहुँचने के तरीके के बारे में दो विकल्प होते हैं:

SELECT * FROM userapplication WHERE application_id > 1025;

सूचकांक का उपयोग करना

  1. बी-ट्री इंडेक्स को स्कैन करके उन सभी पंक्तियों का पता लगाएं जहां application_id > 1025
  2. इन पंक्तियों के लिए डेटा प्राप्त करने के लिए तालिका के उपयुक्त पृष्ठ पढ़ें।

सूचकांक का उपयोग नहीं कर रहे हैं

संपूर्ण तालिका को स्कैन करें, और उपयुक्त रिकॉर्ड चुनें।

सर्वश्रेष्ठ रणनीति चुनना

क्वेरी ऑप्टिमाइज़र का काम अपने इच्छित डेटा को प्राप्त करने के लिए सबसे कुशल रणनीति चुनना है। अगर application_id > 1025 . के साथ बहुत सारी पंक्तियां हैं तो यह वास्तव में सूचकांक का उपयोग करने के लिए कम कुशल हो सकता है। उदाहरण के लिए यदि 90% रिकॉर्ड में application_id > 1025 . है फिर क्वेरी ऑप्टिमाइज़र को बी-ट्री इंडेक्स के लगभग 90% लीफ नोड्स को स्कैन करना होगा और फिर वास्तविक डेटा प्राप्त करने के लिए कम से कम 90% टेबल को भी पढ़ना होगा; इसमें केवल तालिका को स्कैन करने के बजाय डिस्क से अधिक डेटा पढ़ना शामिल होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATE_SUB () उदाहरण – MySQL

  2. सभी टेबल प्रदर्शित करें। वर्णन-जैसी कार्यक्षमता

  3. एक टेक्स्ट पैराग्राफ में दूसरे से परिवर्तन/अंतर को कैसे हाइलाइट करें?

  4. पोस्ट करने से पहले डेटा को ऑफलाइन सेव करें

  5. एकल कथन में जावा में निष्पादित एकाधिक प्रश्न