delphi4arab منتديات دلفي للعرب
اي استعلام اسرع وافضل بحسب المعطيات هذه - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : اي استعلام اسرع وافضل بحسب المعطيات هذه (/showthread.php?tid=12045)



اي استعلام اسرع وافضل بحسب المعطيات هذه - Delphi4Us - 23-08-2022

هنا اجريت استعلامين يؤديان نفس المهمة ولكن لاحظت ان احدهما يبدو اسرع من الثاني
فيبدو ان العبارة Join لست الخيار الأمثل عند الرغبة في التنفيذ بشكل اسرع 
الاستعلام الاول


كود :
select     groubs.id,     groubs.groub_name,     count( sanf.id ) count_of_id from groubs    inner join sanf on (groubs.id = sanf.f_class) group by groubs.id, groubs.groub_name

النتيجة

كود :
Query ------------------------------------------------ Plan ------------------------------------------------ Query Time ------------------------------------------------ Prepare       : 0.00 ms Execute       : 15.00 ms Avg fetch time: 1.67 ms Memory ------------------------------------------------ Current: 34,972,744 Max    : 35,020,976 Buffers: 2,048 Operations ------------------------------------------------ Read   : 1 Writes : 0 Fetches: 3,903 Marks  : 0 Enchanced Info: +-------------------------------+-----------+-----------+-------------+---------+---------+---------+----------+----------+----------+ |          Table Name          |  Records  |  Indexed  | Non-Indexed | Updates | Deletes | Inserts | Backouts |  Purges  | Expunges | |                   |         | Total  |   reads |    reads  |         |            |          |           |          |          | +-------------------------------+-----------+-----------+-------------+---------+---------+---------+----------+----------+----------+ |GROUBS              |        12 |       648 |           0 |       0 |       0 |       0 |        0 |        0 |                 0 | |SANF               |       648 |         0 |         648 |       0 |       0 |       0 |        0 |        0 |                 0 | +-------------------------------+-----------+-----------+-------------+---------+---------+---------+----------+----------+----------+


الاستعلام الثاني

كود :
select     groubs.id,     groubs.groub_name,     (select count(id) from sanf where sanf.f_class = groubs.id)  from groubs

النتيجة

كود :
Query ------------------------------------------------ Plan ------------------------------------------------ Query Time ------------------------------------------------ Prepare       : 0.00 ms Execute       : 0.00 ms Avg fetch time: 0.00 ms Memory ------------------------------------------------ Current: 34,972,744 Max    : 35,020,976 Buffers: 2,048 Operations ------------------------------------------------ Read   : 0 Writes : 0 Fetches: 1,352 Marks  : 0 Enchanced Info: +-------------------------------+-----------+-----------+-------------+---------+---------+---------+----------+----------+----------+ |          Table Name           |  Records  |  Indexed  | Non-Indexed | Updates | Deletes | Inserts | Backouts |  Purges  | Expunges | |                   |  Total   |   reads  |    read |         |        |            |           |           |                     | +-------------------------------+-----------+-----------+-------------+---------+---------+---------+----------+----------+----------+ |GROUBS               |         0 |         0 |          12 |       0 |       0 |       0 |        0 |        0 |                 0 | |SANF                 |         0 |       648 |           0 |       0 |       0 |       0 |        0 |        0 |                 0 | +-------------------------------+-----------+-----------+-------------+---------+---------+---------+----------+----------+----------+


[size=1][صورة: 2v5CKNh.jpg][/size]


RE: اي استعلام اسرع وافضل بحسب المعطيات هذه - Mr.DOS - 23-08-2022

سلام عليكم
قم بحذف

كود :
group by groubs.id, groubs.groub_name


ثم جرب المقارنة مرة ثانية .


RE: اي استعلام اسرع وافضل بحسب المعطيات هذه - Delphi4Us - 23-08-2022

إقتباس :ثم جرب المقارنة مرة ثانية .

لن يقبل ان Group اجباري طالما استخدمت Joint الا بحال كانت كل الحقول تحت تحت تأثير احدى الدوال مثل Sum او count او ماشابه


RE: اي استعلام اسرع وافضل بحسب المعطيات هذه - Mr.DOS - 23-08-2022

سلام عليكم

اكيد كنت اقصد group واحد فقط وليكن groubs.id



بيانات الجدول في مثالك ليست بالقدر الذي يسمح لك عمل مقارنة للاستعلام

جرب على جدولين حجم البيانات يكون اكبر اكيد راح ترفع القبعة للـ join وراح تتفن في عمل having

سوف يتطور استعلامك ليضم select + joins + group by + having + order by يوما ما ..

وتتذكر select top 100 مثلا لتفادي النجمة * وربح بعض الاجزاء من الثواني ....

و ستكون مظطر ايضا لعمل distinct هده سيناريوهات قد مررت بها ...


هنا وفي هذه المرحلة بالضبط يمكن المقارنة بين الاستعلامات .