पहला प्रश्न:
गिनती COUNT()
का उपयोग करना , आंतरिक रूप से सर्वर (MySQL) अनुरोध को अलग तरीके से संसाधित करेगा।
COUNT()
करते समय , सर्वर (MySQL) गिनती के परिणाम को संग्रहीत करने के लिए केवल मेमोरी आवंटित करेगा।
$row=$SQL->rowCount();
. का उपयोग करते समय सर्वर (अपाचे/PHP) पूरे परिणाम सेट को संसाधित करेगा, उन सभी परिणामों के लिए मेमोरी आवंटित करेगा, और सर्वर को फ़ेचिंग मोड में रखेगा, जिसमें लॉकिंग जैसे कई अलग-अलग विवरण शामिल हैं।
ध्यान दें कि PDOStatement::rowCount()
अंतिम कथन से प्रभावित पंक्तियों की संख्या लौटाता है, न कि पंक्तियों की संख्या लौटाता है। यदि संबंधित PDOStatement
. द्वारा निष्पादित अंतिम SQL कथन एक SELECT
था कथन, कुछ डेटाबेस उस कथन द्वारा लौटाई गई पंक्तियों की संख्या लौटा सकते हैं। हालांकि, सभी डेटाबेस के लिए इस व्यवहार की गारंटी नहीं है और पोर्टेबल अनुप्रयोगों के लिए इस पर भरोसा नहीं किया जाना चाहिए।
मेरे विश्लेषण पर, यदि आप COUNT()
. का उपयोग करते हैं , यदि आप $row=$SQL->rowCount();
का उपयोग करते हैं, तो प्रक्रिया MySQL और PHP दोनों में विभाजित हो जाएगी। , PHP के लिए प्रसंस्करण अधिक होगा।
इसलिए COUNT()
MySQL में तेज़ है।
दूसरा प्रश्न:
COUNT(*)
COUNT(id)
. से बेहतर है ।
व्याख्या:
count(*)
mysql में फ़ंक्शन को मानों की गिनती खोजने के लिए अनुकूलित किया गया है। वाइल्डकार्ड का उपयोग करने का अर्थ है कि यह प्रत्येक पंक्ति को प्राप्त नहीं करता है। यह केवल गिनती पाता है। तो count(*)
. का उपयोग करें जहाँ भी संभव हो।
स्रोत: