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

MySQL क्वेरी सीमा और बड़े ऑफ़सेट के साथ हमेशा के लिए ले रही है

ऑफ़सेट के साथ LIMIT अधिकांश डेटाबेस में बेहद धीमा है (मैंने पाया है कुछ दस्तावेज़ीकरण MySQL के लिए इस आशय के लिए और मैं वास्तव में एक अच्छा लेख खोजने की कोशिश कर रहा हूं जिसे मैंने कुछ समय पहले SQLite के लिए समझाते हुए पढ़ा था)। इसका कारण यह है कि इसे आम तौर पर कुछ इस तरह से लागू किया जाता है:

  1. सभी सामान्य क्वेरी प्लानिंग करें जैसे कि LIMIT खंड वहां नहीं था
  2. परिणामों को तब तक देखें जब तक हम आपकी इच्छित अनुक्रमणिका तक नहीं पहुंच जाते
  3. परिणाम लौटाना शुरू करें

इसका क्या मतलब है अगर आप LIMIT 10000, 10 . करते हैं , इसकी व्याख्या इस प्रकार की जाएगी:

  1. पहले 10,000 परिणाम प्राप्त करें और उन्हें अनदेखा करें
  2. आपको अगले 10 परिणाम दें

एक मामूली अनुकूलन है जहां आप कम से कम पहले 10,000 परिणामों के लिए इंडेक्स का उपयोग कर सकते हैं क्योंकि आप उनके मूल्यों की परवाह नहीं करते हैं, लेकिन उस स्थिति में भी, डेटाबेस को अभी भी आपको अपने 10 परिणाम देने से पहले 10,000 इंडेक्स मानों के माध्यम से चलना होगा। और भी अनुकूलन हो सकते हैं जो इसे सुधार सकते हैं, लेकिन सामान्य स्थिति में आप LIMIT का उपयोग नहीं करना चाहते हैं बड़े मानों के लिए ऑफ़सेट के साथ

पेजिनेशन को संभालने का सबसे प्रभावी तरीका है कि मैं जानता हूं कि आखिरी इंडेक्स का ट्रैक रखना है, इसलिए यदि पेज एक id = 5 पर समाप्त होता है , फिर अपना अगला . बनाएं लिंक में WHERE id > 5 . है (LIMIT x . के साथ बेशक)।

संपादित करें:SQLite के लिए लेख मिला . मैं अत्यधिक अनुशंसा करता हूं कि आप इसे पढ़ें क्योंकि यह SQL में चीजों को करने का सही तरीका बताता है। चूंकि SQLite लोग वास्तव में स्मार्ट हैं और अन्य डेटाबेस में भी यही समस्या है, मुझे लगता है कि MySQL इसे इसी तरह लागू करता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रूबी मणि mysql2 विफल स्थापित करें

  2. सी # से MySQL में GUID स्टोर करें

  3. समान कॉलम नामों के साथ 2 टेबल में आंतरिक शामिल हों

  4. Django model.py परिपत्र विदेशी कुंजी

  5. एक MySQL डेटाबेस में क्यूआर कोड ट्रांसफर करें