MySQL पेजिनेशन: परिणाम और कुल गणना को कुशलतापूर्वक पुनर्प्राप्त करना
MySQL में पेजिनेशन लागू करते समय, दो अलग-अलग क्वेरी करना आम बात है: एक से परिणामों की कुल संख्या प्राप्त करें और दूसरा प्राप्त किए गए रिकॉर्ड को सीमित करने के लिए। यह दृष्टिकोण, जिसे डबल-क्वेरीइंग के रूप में जाना जाता है, बड़े डेटासेट के लिए अक्षम हो सकता है।
हालांकि, सवाल उठता है कि क्या कुल परिणाम गणना दोनों को पुनः प्राप्त करना और परिणामों को एक ही क्वेरी में सीमित करना संभव है। हालाँकि इसे प्राप्त करने का कोई सीधा तरीका नहीं है, दो वैकल्पिक विधियाँ उपलब्ध हैं:
SQL_CALC_FOUND_ROWS और FOUND_ROWS()
डबल-क्वेरी के बजाय, आप SQL_CALC_FOUND_ROWS का उपयोग कर सकते हैं और FOUND_ROWS() समान परिणाम प्राप्त करने के लिए कार्य करते हैं। SQL_CALC_FOUND_ROWS वाली क्वेरी सीमित क्वेरी से पहले आती है, और FOUND_ROWS() कॉल कुल गिनती प्राप्त करती है। `; SELECT FOUND_ROWS();
नोट: इस विधि में एक संभावित खामी है। MySQL में एक बग है जो इस तकनीक का उपयोग करते समय ORDER BY क्वेरीज़ को प्रभावित करता है, जिससे बड़ी तालिकाओं पर यह धीमी हो जाती है।
SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE `some_condition`; SELECT FOUND_ROWS();गिनती को कैश करना
एक वैकल्पिक समाधान में कुल गिनती को कैश करना शामिल है एक विशिष्ट अवधि के लिए. यह दृष्टिकोण दक्षता को संरक्षित करते हुए गिनती लाने के लिए एक अलग क्वेरी की आवश्यकता को समाप्त करता है।
उदाहरण:
गिनती पुनर्प्राप्त करें और इसे 10 मिनट के लिए कैश करें:
SET @count = ('तालिका' से COUNT(*) चुनें जहां `some_condition`);बाद के प्रश्नों में, कैश्ड गिनती का उपयोग करें:
'तालिका' से चुनें * जहां `some_condition' सीमा 0, 10;
SET @count = (SELECT COUNT(*) FROM `table` WHERE `some_condition`);
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3