فاديا جميل نشر 9 أكتوبر 2021 أرسل تقرير نشر 9 أكتوبر 2021 ما الأفضل استخدام استعلام مركب أو دمج النتائج برمجياً في لغة السيرفر #c أو java أو PHP 1 اقتباس
1 Wael Aljamal نشر 9 أكتوبر 2021 أرسل تقرير نشر 9 أكتوبر 2021 إن قواعد البيانات العلائقية والتي تعتمد على SQL مبنية بطريقة مٌحسّنة لعمل دمج بين الجداول وبطريقة سريعة وأقل استهلاك للموارد، مثلا قواعد البيانات لديها مفهوم الفهرسة وتعمل بحث وربط القيم بسرعة كبيرة وأفضل من البحث الخطي في لغة البرمجة بعد جلب الاستعلام كما أن الربط بالمفتاح الأجنبي بين الجداول يسرع الدمج كما يوجد query optimizer يأخذ الاستعلام الذي يكتبه المبرمج ويعدل عليه ليصبح أسرع. بالإضافة لذلك، الحصول على النتيجة النهائية من قاعدة البيانات تقلل من حجم البيانات المرسل عبر الاتصال و الشبكة في حال أن المخدم الخاص بالمشروع (مخدم الويب web server) بعيد عن مدير قاعدة البيانات RDBM أي يحتاج لاتصال انترنت. ولا يوجد داعي لتحميل كامل البيانات في ذاكرة المخدم أو العميل ثم عمل فلترة للنتائج، لأن هذا يضعف الأداء. نقاط مهمة للأداء: حجم ذاكرة مدير قاعدة البيانات (إن كانت صغيرة أو استضافة مشتركة يمكن عمل الربط في المخدم) سرعة الشبكة بين قاعدة البيانات والسيرفر (إن كان حجم الجداول الفعلي صغير يمكن نقلهم عبر الشبكة للمخدم ثم الربط) إن كان أداء مخدم قاعدة البيانات سيئاً وأدى لأن تصبح قاعدة البيانات لديك bottleneck لابأس من نقل المعالجة للمخدم 2 اقتباس
1 شرف الدين حفني نشر 9 أكتوبر 2021 أرسل تقرير نشر 9 أكتوبر 2021 جلب النتيحة من قاعدة البيانات مباشرةً عبر الsql join يُعد أفضل وذلك إعتماداً على عدد من الأسباب مثل المكان الطبيعي للتعامل مع البيانات هو قواعد البيانات فﻻ يجب أن أن نجعل الخادم يقوم بتلك المهمة بدلاً عن قاعدة البيانات حتى ﻻ نخالف قاعدة المسؤلية الواحدة" Single responsibility" ويكون كل جزأ في المشروع يقوم بوظيفته يكون الأمر منطقياً أكثر عند تنفيذه بإستعﻻمة واحدة ويكون الشفرة البرمجية قابلة للقراءة بشكل أفضل يكون الأداء أفضل وأوفر للموارد حيث ﻻ تحتاج أن ترسل طلبات مختلفة إلى قاعدة البيانات كل مرة, بل تقوم بإرسال طلب واحد مما يُزيد الأداء ويوفر الموارد تقوم قاعدة البيانات بإستخدام مُحسن الإستعﻻمات(query optimizer) بتنفيذ الإستعﻻمة الواحدة بطريقة فعالة أفضل , فمثلاً عند تنفيذ جملة تقوم بجلب بيانات الموظفين في قسم معين select * from employee inner join department using ssn ستقوم قاعدة البيانات بإستخدام الفهرسة(indexing) جلب البيانات فقط التي تحتوي ع المفتاح ssn , بينما عند تنفيذ نفس الوظيفة عبر جملتين مختلفتين وربطهم بلغة الخادم(php, c#. java) ستضطر إلى جلب جميع البيانات ومن ثم فلترتها مما يعني تنفيذ عمليات أكثر يمكن أن نأخذ مثالاً أخر SELECT e.fname, e.lname FROM employee e WHERE EXISTS ( SELECT 1 FROM payment WHERE payment.emp_id = emp.id ); تلك الجملة تقوم بإرجاع بيانات الموظفين الذين لهم عمليات دفع , هنا تقوم قاعدة البيانات بتنفيذ الجملة الداخلية أولاً ومن ثم تقوم جلب البيانات التي تتطابق فقط مع الجملة الداخلية, إن قمنا بتنفيذها عبر عدة جمل وربطها بلغات البرمجة سنضطر إلى جلب البيانات كلها ومن ثم فلترتها مثل المثال السابق مما يعني عمليات أكثر وبوجهٍ عام في قواعد البيانات يُفضل أغلب الأوقات أن تقوم بتنفيذ الإستعﻻمات عبر جملة واحدة 2 اقتباس
السؤال
فاديا جميل
ما الأفضل استخدام استعلام مركب أو دمج النتائج برمجياً في لغة السيرفر #c أو java أو PHP
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.