البرمجة

تحسين أداء استعلام T-SQL لتجميع بيانات السجلات بكفاءة

في هذا السياق، يظهر أن استعلامك الحالي يتأثر بتأثير سلبي على الأداء بسبب عدة عمليات فرعية مكررة تقوم بفحص الجدول نفسه عدة مرات، وهذا يؤدي إلى تكرار الجهد الحسابي وبالتالي إلى إبطاء الاستعلام. لتحسين الأداء، يمكن تحسين هذا الاستعلام عن طريق استخدام عمليات الانضمام (JOIN) والتجميع (SUM و COUNT) بشكل أفضل.

إليك استعلام معدل قليلاً يستند إلى عمليات الانضمام والتجميع:

sql
SELECT mvlog.loc, CONVERT(date, DATEADD(ss, mvlog.entrytime,'19700101')) AS edate, mvlog.tag, COUNT(ml.loc) AS visits, SUM(ml.entrywt - ml.exitwt) AS consumed, SUM(ml.exittime - ml.entrytime) AS occupancy FROM eventlogV AS mvlog JOIN mylog AS ml ON mvlog.loc = ml.loc AND mvlog.edate = CONVERT(date, DATEADD(ss, ml.entrytime,'19700101')) AND mvlog.tag = ml.tag WHERE mvlog.tag IS NOT NULL AND mvlog.loc IS NOT NULL GROUP BY mvlog.loc, CONVERT(date, DATEADD(ss, mvlog.entrytime,'19700101')), mvlog.tag

تلاحظ أننا استخدمنا عمليات الانضمام لتجنب تكرار الفحص المتكرر للجدول. يتم أيضًا استخدام العبارة الشرطية WHERE لتحسين الأداء بمنع القيم الفارغة (NULL) وضمان توفر الفهرس على الحقول المرتبطة بالانضمام.

المزيد من المعلومات

بالطبع، سأوسع على الاستعلام الذي قدمته وأقدم بعض التوضيحات إضافية حول كيفية تحسين الأداء وتنظيم الاستعلام.

أولاً وقبل كل شيء، لنلقي نظرة على التعديلات التي تم إجراؤها في الاستعلام:

  1. استخدام عمليات الانضمام (JOIN): في النسخة المعدلة من الاستعلام، تم استخدام عمليات الانضمام لتجنب تكرار فحص الجدول مرات عديدة، وبدلاً من ذلك، تم دمج الجدولين eventlogV و mylog باستخدام عمليات الانضمام.

  2. تجنب استخدام الفهرس مباشرة: في الاستعلام المعدل، لاحظت العبارة WITH (INDEX(pt_index))، ولكن قد تكون هذه العبارة غير ضرورية، حيث يمكن لمحرك قاعدة البيانات أن يختار الفهرس المناسب بناءً على الخوارزميات الخاصة به.

  3. استخدام الـ GROUP BY: تم استخدام عبارة GROUP BY لتجميع البيانات بناءً على الحقول المحددة. هذا يساعد في تقليل حجم البيانات المعالجة وتحسين أداء الاستعلام.

  4. تحسين شروط WHERE: تم استخدام الشروط WHERE لتحسين أداء الاستعلام عن طريق استبعاد القيم الفارغة (NULL) في حقول tag و loc.

تلك التحسينات يمكن أن تؤدي إلى تحسين كبير في أداء الاستعلام، خاصة عند التعامل مع مجموعات بيانات كبيرة. يجب أيضاً مراعاة توفير الفهارس اللازمة على الحقول المستخدمة في عمليات الانضمام والتجميع لتعزيز الأداء.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر