عزز أداء استعلام SQL باستخدام MSSQL. تعرف على كيفية تحسين استفساراتك من أجل الكفاءة والسرعة في هذا الدليل الإعلامي.
يمكن أن تؤدي استعلامات Microsoft SQL Server (MSSQL) غير المحسّنة إلى أداء دون المستوى ، وإفراط في استخدام الموارد ، وبيانات غير متسقة ، وعيوب أمنية ، وصعوبات في الصيانة. يمكن أن تؤثر هذه المشكلات على وظائف برنامجك وموثوقيته وأمانه ، مما قد يحبط المستخدمين ويكلفك المزيد من المال.
يعد تحسين استعلامات SQL في MSSQL أمرًا بالغ الأهمية لتحقيق أداء فعال وسريع. من خلال تنفيذ تقنيات مثل الفهرسة وتبسيط الاستعلام وتخزين الإجراءات ، يمكن للمستخدمين ذلك توازن أداء الاستعلام وأداء تعديل البيانات ، وتحسين قاعدة البيانات الشاملة في نهاية المطاف أداء.
تحسين الاستعلام من خلال الفهرسة
فهرسة قاعدة البيانات ينظم ويصنف البيانات في جداول قاعدة البيانات لجعل البحث أسرع وأكثر كفاءة. تقوم الفهرسة بإنشاء نسخ من البيانات في الجداول وفرزها بحيث يكون ملف محرك قاعدة البيانات يمكن التنقل بينها بسهولة.
عند تنفيذ الاستعلام ، يستخدم محرك قاعدة البيانات الفهرس للعثور على البيانات المطلوبة وإرجاع النتائج بسرعة ، وبالتالي تسريع وقت تنفيذ الاستعلام. بدون فهرسة ، يجب أن يقوم محرك قاعدة البيانات بفحص جميع الصفوف في الجدول للعثور على البيانات المطلوبة ، وقد يكون هذا الأمر كثيفًا للوقت والموارد ، خاصة للجداول الكبيرة.
إنشاء فهرس في MSSQL
يعد إنشاء فهرس في قواعد البيانات العلائقية أمرًا سهلاً ، ولا يتم التغاضي عن MSSQL. يمكنك استخدام ال إنشاء الفهرس بيان لإنشاء فهرس في MSSQL.
يخلقفِهرِس index_name
تشغيل table_name (العمود 1 ، العمود 2 ، ...) ؛
في كود SQL أعلاه ، index_name هو اسم الفهرس ، اسم الطاولة هو اسم الجدول و العمود 1, العمود 2وما إلى ذلك أسماء الأعمدة المراد فهرستها.
فيما يلي كيفية إنشاء فهرس غير متفاوت في ملف عملاء الجداول اسم العائلة عمود مع جملة SQL.
يخلق غير متشابك فِهرِس IX_Customers_LastName
على العملاء (الاسم الأخير) ؛
تقوم العبارة بإنشاء فهرس غير عنقودي يسمى IX_Customers_LastName على ال اسم العائلة عمود عملاء طاولة.
تكلفة الفهرسة
في حين أن الفهرسة يمكن أن تحسن أداء الاستعلام بشكل ملحوظ ، إلا أنها تأتي بتكلفة. تتطلب الفهرسة مساحة قرص إضافية لتخزين الفهرس ، ويمكن لعمليات الفهرسة أن تبطئ عمليات تعديل البيانات مثل الإدخالات والتحديثات والحذف. يجب تحديث الفهرس عند تعديل البيانات ، ويمكن أن تستغرق عملية التحديث وقتًا طويلاً بالنسبة للجداول الكبيرة.
لذلك ، من الضروري تحقيق التوازن بين أداء الاستعلام وأداء تعديل البيانات. يجب عليك إنشاء فهارس فقط على الأعمدة التي ستبحث عنها بشكل متكرر. من الضروري أيضًا مراقبة استخدام موارد الفهرس بانتظام وإزالة الفهارس غير الضرورية.
تحسين الاستعلام من خلال تبسيط الاستعلام
لتحليل البيانات ، تكون الاستعلامات المعقدة مفيدة لاستخراج البيانات. ومع ذلك ، فإن الاستعلامات المعقدة لها تأثير على الأداء ، وقد تؤدي إلى استخراج بيانات غير فعال.
يتضمن تبسيط الاستعلامات تقسيم الاستعلامات المعقدة إلى استعلامات أصغر وأبسط للحصول على معالجة أسرع وأقل كثافة في استخدام الموارد.
يعمل تبسيط الاستعلام على تحسين الأداء وتسهيل استخراج البيانات عن طريق تقسيم الاستعلامات المعقدة إلى استعلامات أبسط لأن الاستعلامات المعقدة قد تسبب اختناقات في النظام. يصعب فهمها ، مما يجعل من الصعب على المطورين والمحللين استكشاف المشكلات وإصلاحها أو تحديد مجالات التحسين.
في ما يلي مثال لاستعلام معقد يتم تشغيله على MSSQL لجدول طلبات العملاء حيث يكون الهدف هو تحديد الاتجاهات والأنماط في البيانات:
يختار
اسم الزبون،
COUNT (order_id) AS total_orders ،
AVG (order_amount) AS average_order_amount ،
SUM (order_amount) AS total_sales
من
طلبات
أين
order_date بين "2022-01-01" و "2022-12-31"
AND order_status = "مكتمل"
مجموعة من
اسم الزبون
نأخذ
COUNT (معرّف_الطلب)> 5
ترتيب حسب
إجمالي_المبيعات DESC ؛
يبحث الاستعلام عن أسماء العملاء ومعلومات المبيعات من الطلبات المكتملة في عام 2022 أثناء تصفية العملاء الذين لديهم أقل من خمسة طلبات حسب إجمالي المبيعات بترتيب تنازلي.
قد يقدم طلب البحث إحصاءات قيّمة ، لكنه معقد وسيستغرق في النهاية وقتًا أطول للمعالجة ، خاصةً إذا كان طلبات يحتوي الجدول على العديد من الإدخالات.
يمكنك تبسيط الاستعلام عن طريق تقسيم الاستعلام إلى استعلامات أصغر تنفذ واحدًا تلو الآخر.
- احصل على قائمة بأسماء العملاء والعدد الإجمالي للطلبات التي قدموها
يختار
اسم الزبون،
COUNT (order_id) AS total_orders
من
طلبات
أين
order_date بين "2022-01-01" و "2022-12-31"
AND order_status = "مكتمل"
مجموعة من
اسم الزبون
نأخذ
COUNT (order_id)> 5 ؛- احصل على متوسط مبلغ الطلب لكل عميل
يختار
اسم الزبون،
AVG (order_amount) AS average_order_amount
من
طلبات
أين
order_date بين "2022-01-01" و "2022-12-31"
AND order_status = "مكتمل"
مجموعة من
اسم الزبون
نأخذ
COUNT (order_id)> 5 ؛
- احصل على إجمالي المبيعات لكل عميل
يختار
اسم الزبون،
SUM (order_amount) AS total_sales
من
طلبات
أين
order_date بين "2022-01-01" و "2022-12-31"
AND order_status = "مكتمل"
مجموعة من
اسم الزبون
نأخذ
COUNT (معرّف_الطلب)> 5
ترتيب حسب
إجمالي_المبيعات DESC ؛
يفصل هذا النهج المبسط مهام الحصول على أسماء العملاء وإجمالي الطلبات ومتوسط مبالغ الطلبات وإجمالي المبيعات لكل عميل في استعلامات فردية. كل استعلام له أغراض محددة ويتم تحسينه لمهام محددة ، مما يسهل على قاعدة البيانات المعالجة عند الطلب.
تلميحات حول تبسيط الاستعلام
عندما تقوم بتبسيط الاستعلامات ، فمن الضروري التركيز على مهمة واحدة في كل مرة لإنشاء استعلامات تم تحسينها للمهمة المحددة. يمكن أن يساعد التركيز على مهمة واحدة في تحسين الأداء بشكل ملحوظ.
من المهم أيضًا استخدام اصطلاحات تسمية جيدة لتسهيل فهم الشفرة وصيانتها. يمكنك بسهولة تحديد المشكلات المحتملة ومجالات التحسين في النظام.
تحسين الاستعلام من خلال الإجراءات المخزنة
الإجراءات المخزنة هي مجموعات من عبارات SQL المكتوبة مسبقًا والمخزنة في قاعدة بيانات. يمكنك استخدام الإجراءات المخزنة لأداء عمليات مختلفة ، من التحديث إلى إدراج أو استرداد البيانات من قاعدة بيانات. يمكن أن تقبل الإجراءات المخزنة المعلمات. يمكنك الاتصال بهم من لغات برمجة مختلفة ، مما يجعلها أداة قوية لتطوير التطبيقات.
فيما يلي مثال على إنشاء إجراء مخزن لـ MSSQL يُرجع متوسط الراتب للموظفين في القسم:
يخلقإجراء [dbo]. [GetAverageSalary]
DepartmentName فاركار (50)
مثل
يبدأ
يختارAVG(مرتب) مثل متوسط الدخل
من الموظفين
أين القسم =DepartmentName
نهاية
في الإجراء المخزن ، قمت بتعريف معلمة تسمى @اسم القسم واستخدمت أين بند لتصفية النتائج من قبل القسم. لقد استخدمت أيضًا ملف AVG وظيفة لحساب متوسط رواتب الموظفين في القسم.
يمكنك تنفيذ الإجراءات المخزنة في MSSQL باستخدام امتداد EXEC إفادة.
فيما يلي كيفية تنفيذ الإجراء المخزن أعلاه:
EXEC [dbo]. [GetAverageSalary]DepartmentName = 'مبيعات'
في بيان تنفيذ الإجراء المخزن ، تقوم بتمرير الامتداد مبيعات القيمة كاسم القسم. سيعيد البيان متوسط راتب الموظف في قسم المبيعات.
كيف تحسن الإجراءات المخزنة أداء الاستعلام؟
يمكن للإجراءات المخزنة تحسين أداء الاستعلام بشكل ملحوظ. أولاً ، تقلل الإجراءات المخزنة حركة مرور الشبكة عن طريق تنفيذ عبارات SQL على جانب الخادم بدلاً من نقل البيانات ذهابًا وإيابًا بين العميل والخادم ، وبالتالي تقليل كمية البيانات المرسلة عبر الشبكة وتقليل استجابة الاستعلام وقت.
ثانيًا ، يمكنك تجميع إجراءات التخزين المؤقت المخزنة ، مما يعني تخزين خطة التنفيذ في الذاكرة. عند استدعاء الإجراء المخزن ، يقوم الخادم باسترداد خطة التنفيذ من الذاكرة بدلاً من إعادة الترجمة عبارات SQL ، وبالتالي تقليل وقت تنفيذ الإجراء المخزن وتحسين الاستعلام أداء.
يمكنك إعداد MSSQL على أوبونتو
خطت MSSQL خطوات كبيرة في دعم توزيعات Ubuntu وتوزيعات Linux الأخرى. أدركت Microsoft الشعبية المتزايدة لنظام Linux في المؤسسة وقررت توسيع نطاق توفر خادم قاعدة البيانات الرئيسي إلى أنظمة Linux الأساسية.