SQL_CALC_FOUND_ROWS
केवल तभी उपयोगी है जब आप LIMIT
. का उपयोग कर रहे हों खंड, लेकिन फिर भी जानना चाहते हैं कि LIMIT
. के बिना कितनी पंक्तियां मिलतीं ।
सोचें कि यह कैसे काम करता है:
SELECT SQL_CALC_FOUND_ROWS * FROM Users;
आप डेटाबेस को तालिका में सभी डेटा पुनर्प्राप्त/पार्स करने के लिए मजबूर कर रहे हैं, और फिर आप इसे फेंक देते हैं। यहां तक कि अगर आप किसी भी पंक्ति को पुनः प्राप्त नहीं करने जा रहे हैं, तब भी डीबी सर्वर डिस्क से वास्तविक डेटा को इस धारणा पर खींचना शुरू कर देगा कि आप उस डेटा को चाहते हैं।
मानवीय शब्दों में, आपने सुपर किराना स्टोर की पूरी सामग्री खरीदी, लेकिन कैशियर स्टैंड से गोंद के पैक को छोड़कर सब कुछ फेंक दिया।
जबकि, कर रहे हैं:
SELECT count(*) FROM users;
डीबी इंजन को यह जानने देता है कि जब आप जानना चाहते हैं कि कितनी पंक्तियां हैं, तो आप वास्तविक डेटा के बारे में कम परवाह नहीं कर सकते। किसी भी बुद्धिमान डीबीएमएस पर, इंजन इस गिनती को तालिका के मेटाडेटा से प्राप्त कर सकता है, या तालिका के प्राथमिक कुंजी इंडेक्स के माध्यम से एक साधारण रन को कभी भी ऑन-डिस्क पंक्ति डेटा को छुए बिना प्राप्त कर सकता है।