"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ما هي الطريقة الأسرع لحساب صفوف قاعدة البيانات: PDO::rowCount أو COUNT(*) ولماذا؟

ما هي الطريقة الأسرع لحساب صفوف قاعدة البيانات: PDO::rowCount أو COUNT(*) ولماذا؟

تم النشر بتاريخ 2024-11-06
تصفح:497

Which Method is Faster for Counting Database Rows: PDO::rowCount or COUNT(*) and Why?

أداء PDO::rowCount vs.COUNT(*)

عند حساب الصفوف في استعلام قاعدة البيانات، يتم الاختيار بين استخدام PDO:: يمكن أن يؤثر عدد الصفوف وCOUNT(*) بشكل كبير على الأداء.

PDO::rowCount

PDO::rowCount تُرجع عدد الصفوف المتأثرة ببيان SQL الأخير. ومع ذلك، بالنسبة لعبارات SELECT، قد ترجع بعض قواعد البيانات عدد الصفوف التي تم إرجاعها. هذا السلوك غير مضمون ولا ينبغي الاعتماد عليه.

داخليًا، تقوم PDO::rowCount بمعالجة مجموعة النتائج بأكملها، وتخصيص الذاكرة لكل صف. يمكن أن تكون هذه عملية كثيفة الاستخدام للذاكرة، خاصة بالنسبة لمجموعات النتائج الكبيرة.

COUNT(*)

COUNT() يحسب عدد الصفوف في الاستعلام دون استرداد الصفوف الفعلية. يقوم MySQL بتحسين COUNT() للعثور على العدد دون جلب كل صف.

مقارنة الأداء

لأسباب تتعلق بالأداء، يكون COUNT(

) أسرع بشكل عام من PDO::rowCount لحساب الصفوف. وذلك لأن COUNT() يستفيد من تحسين MySQL ويتجنب التشغيل المكثف للذاكرة لمعالجة مجموعة النتائج بأكملها.

الفهرسة

استخدام الفهرس في عمود المعرف يمكن أن يؤدي إلى تحسين أداء كلتا الطريقتين بشكل ملحوظ. يسمح الفهرس لـ MySQL بتحديد موقع الصفوف المطابقة لقيمة المعرف بسرعة دون الحاجة إلى مسح الجدول بأكمله.

أفضل الممارسات

]&&&]بشكل عام، يوصى باستخدام COUNT( *) بدلاً من PDO::rowCount لحساب عدد الصفوف في الاستعلامات، خاصة عندما تكون مجموعة النتائج كبيرة. بالإضافة إلى ذلك، فإن استخدام فهرس في عمود المعرف يمكن أن يؤدي إلى تحسين الأداء.

بيان الافراج أعيد طبع هذه المقالة على: 1729724730 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3