منتديات روكشا     َولَوْلَا إِذْ دَخَلْتَ جَنَّتَكَ قُلْتَ مَا شَاءَ اللَّهُ لَا قُوَّةَ إِلَّا بِاللَّه

الرئيسية |  التسجيل  |  مركز رفع الملفات  |  الاتصال بنا  

 



العودة   منتديات روكشا > المنتدي التخصصي > قسم التصاميم والبرمجة والجرافيكس والميديا > انشاء وتصميم وبرمجة البرامج

الملاحظات

انشاء وتصميم وبرمجة البرامج برنامج الوورد اكسس اكسيل بوربوينت فيجوال بيسك برامج محاسبة برامج ادارة وتنظيم حسابات تنسيق الملفات

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 03-24-2019, 06:55 AM

الصورة الرمزية الفارس

الفارس

.:: عضـو متميز ::.

 
تاريخ التسجيل: Feb 2019
الدولة: مصر
المشاركات: 837
معدل تقييم المستوى: 12
الفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالى
الفارس غير متواجد حالياً
حصري حصري لمنتدي روكشا طرق العرض المفهرسة وكيف يمكن أن تساعد في تحسين أداء الاستعلام

 




السلام عليكم ورحمه الله وبركاته

حصري لمنتدي روكشا طرق العرض المفهرسة وكيف يمكن أن تساعد في تحسين أداء الاستعلام



يمكن أن يكون SQL Server Views أداة مفيدة رائعة لمطور قاعدة البيانات ، ويسمح لنا بتضمين العديد من الاستعلامات المعقدة في استعلام واحد ومساعدة المطورين الآخرين في العمل مع قاعدة البيانات الخاصة بنا بشكل أسهل. ولكن إذا قمنا فقط بإنشاء طريقة عرض منتظمة ، فإن المهمة هي مجرد مساعدة في جعل استخدام استعلام SELECT المعقد أسرع وأكثر قابلية للقراءة وفهمًا. لا يوجد أي تحسن في الأداء يتم تطبيقه على هذا النوع من المشاهدة ، حيث يصبح العرض shorcut لاستعادة البيانات. لحسن الحظ ، يمكننا الآن إنشاء طريقة عرض مفهرسة ، مما سيساعدنا على زيادة أداء الاستعلام ، وتوفير التكلفة. هناك العديد من الفوائد إذا فهمناها جيدًا وقمنا بمعالجتها بالطريقة الصحيحة. ولكن لا يوجد غداء مجاني أيضًا ، فما الذي يجب أن نعنيه؟ أين ومتى تستخدم طرق العرض المفهرسة؟




في هذه المقالة الأساسية للغاية ، أعرض عليك ما هي طريقة العرض المفهرسة وكيفية استخدامها لتحسين أداء الاستعلام في SQL Server.

ما هو الرأي؟
طريقة العرض هي كائن في SQL Server يسمح لنا بتجميع جملة SELECT معقدة ومعقدة ، مع العديد من الجمل الفرعية ، مثل عامل التشغيل JOIN أو الدالة التجميعية مثل SUM COUNT AVG ... في استعلام واحد. للحصول على قاعدة بيانات شائعة جدًا لإدارة فواتير العملاء ، بافتراض أن لدينا استعلامًا يتضمن العديد من فقرات JOIN لسرد جميع تفاصيل الطلبات من العملاء الذين يعيشون في مدينة دانانج.



إخفاء رمز النسخ

اقتباس:
SELECT a.Id, a.FirstName, a.LastName, d.ProductId, d.ProductName
FROM Customers a JOIN Orders b
ON a.CustomerId = b.CustomerId
JOIN OrderDetails c
ON b.OrderId = c.OrderId
JOIN Products d
ON c.ProductId = d.ProductId
WHERE a.City = 'Danang'



لذلك أينما نريد قائمة تفاصيل الطلب من العملاء الذين يعيشون في مدينة دانانج ، يتعين علينا تشغيل الاستعلام أعلاه. إنه في وقت ما ليس استعلامًا قصيرًا ولكنه طويل جدًا ومعقد جدًا ، وإذا أعطى مهندس قاعدة البيانات الاستعلام المعقد إلى مطور خلفية ، فسيشعر بالارتباك. في هذه الحالة ، سينشئ مهندس قاعدة البيانات اسم عرض vOrderDetail_DanangCity كـ رفع الصوت عالياً:




إخفاء رمز النسخ

اقتباس:

CREATE VIEW dbo.vOrderDetail_DanangCity AS
SELECT a.Id, a.FirstName, a.LastName, d.ProductId, d.ProductName
FROM Customers a JOIN Orders b
ON a.CustomerId = b.CustomerId
JOIN OrderDetails c
ON b.OrderId = c.OrderId
JOIN Products d
ON c.ProductId = d.ProductId
WHERE a.City = 'Danang'



حتى الآن يوفر مهندس قاعدة البيانات طريقة عرض للمطور الخلفي ، اسم vOrderDetail_DanangCity. يحتاج المطور فقط إلى معرفة ما تفعله طريقة العرض ، ولا يهتم بكيفية القيام به. في أي مكان يحتاج إلى استخدام طريقة العرض ، فهو:

إخفاء رمز النسخ
اقتباس:
SELECT * FROM dbo.vOrderDetail_DanangCity



رائع ، الآن يمكنه الحصول على النتيجة باستخدام استعلام واحد فقط. لكن ماذا يحدث داخل المنظر؟ في هذه الحالة ، فإن إنشاء طريقة عرض هو مجرد اختصار ، وعند استدعاء طريقة العرض ، لا يزال يتعين على نظام إدارة قواعد البيانات (DBMS) إعادة تشغيل الاستعلام أعلاه للحصول على النتيجة. وهذا يعني أن العديد من جمل الربط ، والجمل الفرعية ، والوظائف التجميعية ... سيتم تنفيذها مرة أخرى.



وجهات النظر المدرجة
المشاهدات المفهرسة (أو المشاهدات المادية في بعض الكتب) ، هي طريقة عرض بها فهرس فريد ومجمع. لنقم بإنشاء طريقة عرض مفهرسة لفهمها بوضوح.






بافتراض أن لدي قاعدة بيانات بسيطة بالعلاقة التالية:

الصورة 1 للعروض المفهرسة وكيف يمكن أن تساعد في تحسين أداء الاستعلام


يمكن لطالب واحد الانضمام إلى العديد من الدورات. دورة واحدة يمكن أن يكون انضمام العديد من الطلاب. سيحصل الطالب الذي ينضم إلى دورة ما على امتحان ويحصل على درجة. في قاعدة البيانات ، هناك 2000 صف في الدورات التدريبية ، و 5000 صف في الطلاب ، و 1000000 صف في Student_Course. يمكنك تنزيل ملف النسخ الاحتياطي لقاعدة البيانات التجريبية (bak) في نهاية هذه المقالة.




على افتراض أنه يتعين علينا سرد جميع الدورات التدريبية التي التحق بها طالب واحد على الأقل ومتوسط ​​درجة تلك الدورة.

إخفاء رمز النسخ
اقتباس:
SELECT crs.CourseName, AVG(std_crs.Score) AS Average
FROM dbo.Courses crs JOIN Student_Course std_crs
ON crs.Id = std_crs.CourseId
GROUP BY crs.CourseName
يستغرق تنفيذ هذا الاستعلام 4 ثوانٍ. سوف نستخدم هذا الاستعلام لإنشاء طريقة عرض:

إخفاء رمز النسخ

اقتباس:
CREATE VIEW dbo.AverageScrores
WITH SCHEMABINDING
AS
SELECT crs.CourseName, SUM(std_crs.Score) AS TotalScore, COUNT_BIG(*) AS NumberOfRecords
FROM dbo.Courses crs JOIN dbo.Student_Course std_crs
ON crs.Id = std_crs.CourseId
GROUP BY crs.CourseName


لاحظ أننا سنستخدم SUM و COUNT_BIG (*) لهذه الحالة. يحتوي إنشاء طرق عرض مفهرسة في SQL Server على بعض القيود والمتطلبات ، وعلينا التعامل معها ، في هذه الحالة ، من خلال تحويل AVG إلى SUM و COUNT ، وفي المستقبل سنقوم بحساب AVG = SUM / COUNT. لن نناقش هذه المتطلبات هنا.




يعد WITH SCHEMABINDING مطلبًا إلزاميًا لإنشاء طريقة عرض مفهرسة. إنها تساعد على حماية appeare العمود في طريقة العرض ، لا يمكنك تغيير أو إسقاط العمود من الجدول الأساسي. إذا كنت تريد ، فيجب أولاً إسقاط العرض أو تغيير العمود أو حذفه ، ثم إعادة إنشاء طريقة عرض أخرى.

أخيرًا ، أنشئ فهرسًا فريدًا متفاوت المسافات على هذا العرض. يمكننا إنشاء فهرس في عمود واحد أو أكثر.

إخفاء رمز النسخ
اقتباس:
CREATE UNIQUE CLUSTERED INDEX CIX_AverageScrores
ON dbo.AverageScrores(CourseName);
والآن لدينا وجهة نظر مفهرسة. عندما ننشئ فهرسًا فريدًا على طريقة العرض ، فإننا "نقوم بتحقيقه" .



إذا لم يكن للعرض أي فهرس فريد ، فهذا مجرد اختصار. عندما يتم استدعاء العرض ، سيقوم نظام إدارة قواعد البيانات بإعادة تشغيل الاستعلام للحصول على النتيجة. وهذا يعني أن نظام إدارة قواعد البيانات سيعمل على تشغيل العديد من جمل الانضمام ، والعديد من الوظائف التجميعية المعقدة ... مرة أخرى.




إذا كان للعرض فهرس فريد ، فسيتم "تحقيقه". يتم إنشاء نسخة واحدة من طريقة العرض هذه. يتم استخدام طريقة العرض الملموسة هذه لتخزين نتيجة الاستعلام الذي استخدمناه لإنشاء طريقة العرض. عندما يتم استدعاء العرض ، بدلاً من إعادة تشغيل الاستعلام مع جملة معقدة ، سيتم قراءة DBMS من العرض المادي.
فلنشغل رفع الصوت عاليا الاستعلام:





إخفاء رمز النسخ

اقتباس:

SELECT CourseName, TotalScore / NumberOfRecords AS Average FROM dbo.AverageScrores WITH (NOEXPAND)
نحن نستخدم الآن طريقة العرض المفهرسة ، من خلال الإشارة إلى أن الاستعلام يجب أن يستخدم WITH (NOEXPAND). مع (NOEXPAND) ، ستخبر DBMS بأنها طريقة عرض مفهرسة ونريد استخدام النتيجة المخزنة من قبل. إذا نسيت إضافة WITH (NOEXPAND) ، فستعيد DBMS تشغيل الاستعلام.




تظهر النتيجة بعد 00:00:00 ثانية. على الفور.

قارن وجهات النظر والآراء
قم بتشغيل استعلام 2: الاستعلام الأول هو الاستعلام الذي استخدمناه لإنشاء طريقة العرض. الاستعلام الثاني هو طرق العرض المفهرسة.

إخفاء رمز النسخ
اقتباس:

SELECT crs.CourseName, SUM(std_crs.Score) / COUNT_BIG(*) AS Average
FROM dbo.Courses crs JOIN dbo.Student_Course std_crs
ON crs.Id = std_crs.CourseId
GROUP BY crs.CourseName

SELECT CourseName, TotalScore / NumberOfRecords AS Average FROM dbo.AverageScrores WITH (NOEXPAND)

يمكننا أن نرى النتيجة هي نفسها ، لا يوجد اختلاف.

الصورة 2 للعروض المفهرسة وكيف يمكن أن تساعد في تحسين أداء الاستعلام




لكن وقت التنفيذ مختلف تمامًا. عندما نستخدم طريقة العرض المفهرسة ، تكون الساعة 00:00:00. عندما نستخدم الاستعلام المستند ، فهو 4 ثوانٍ. هذا الاختلاف لأن طرق العرض المفهرسة مع NOEXPAND لا يجب أن تحسب النتيجة مرة أخرى. لم ينضم الجدول وحساب الوظيفة الإجمالية. إنها فقط تقرأ النتيجة المخزنة في العرض وتظهر لنا.


متى يجب استخدام
استخدام طريقة العرض المفهرسة يبدو أنه اختيار جيد. ولكن هل هذا غداء مجاني؟





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



عرض الصيانة مشكلة كبيرة. ما هي الطريقة الأكثر فعالية للحفاظ على النتيجة المخزنة بشكل أسرع دون إعادة تشغيل الاستعلام الأصلي؟ نظرًا لوجود مشكلة في صيانة العرض ، توجد قيود ومتطلبات كثيرة لإنشاء طريقة العرض المفهرسة ، على سبيل المثال ، لا يُسمح بالاستعلام باستخدام OUTER JOIN.



لذلك نحن نعرف طريقة العرض المفهرسة:

اجعل جملة SELECT تعمل بشكل أسرع

جعل إدراج أو تحديث أو حذف أو بعض الأحداث التلاعب تصبح أبطأ

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

صورة 3 لطرق العرض المفهرسة وكيف يمكن أن تساعد في تحسين أداء الاستعلام

يمكنك تنزيل قاعدة البيانات التجريبية على الرابط أدناه



حمل مباشر من هنا


رد مع اقتباس
قديم 03-24-2019, 01:28 PM   #2

ابن الوليد

.:: ادارة المنتدي ::.

الصورة الرمزية ابن الوليد

تاريخ التسجيل: Nov 2018
الدولة: مصر
المشاركات: 1,686
معدل تقييم المستوى: 10
ابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud of
إرسال رسالة عبر MSN إلى ابن الوليد إرسال رسالة عبر Yahoo إلى ابن الوليد إرسال رسالة عبر Skype إلى ابن الوليد
افتراضي

تسلم وتسلم حصرياتك الروعة
الى الامام يالغالى ولا يحرمنا من جديدك

ابن الوليد متواجد حالياً  

رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


الذين يشاهدون محتوى الموضوع الآن : 5 ( الأعضاء 0 والزوار 5)
 
أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
برنامج حصري لمنتدي روكشا برنامج تحويل ملفات Excel من الإنجليزية إلى الألبانية الفارس انشاء وتصميم وبرمجة البرامج 1 03-18-2019 03:20 PM
برنامج حصري لمنتدي روكشا برنامج تحويل الملفات من الإنجليزية إلى الصينية والصينية إلى الإنجليزية البرمجيات الفارس انشاء وتصميم وبرمجة البرامج 1 03-18-2019 01:42 PM
برنامج حصري لمنتدي روكشا برنامج تحويل الملفات من الإنجليزية إلى العربية والعربية إلى الإنجليزية البرمجيات الفارس انشاء وتصميم وبرمجة البرامج 0 03-18-2019 07:26 AM
برنامج حصري لمنتدي لروكشا برنامج مقارنه بين اثنين من الملفات وإيجاد الاختلافات البرمجيات الفارس انشاء وتصميم وبرمجة البرامج 0 03-18-2019 07:13 AM
برنامج تحسين أداء جهاز الكمبيوتر Glary Utilities Pro 5.110.0.135 Multilingua ابن الوليد برامج الحاسب 2 11-29-2018 12:09 AM

 

RSS RSS 2.0 XML MAP HTML

الساعة الآن 06:12 AM

نبذة عن المنتدى

روابط مفيدة

إعلانات نصية

روابط الموقع

منتديات روكشا لتقنية المعلومات تقدم كل ما هو جديد ومفيد في عالم البرامج سواء جاهزة أو طرق وشروحات برمجة وتصميم وسوف تجدون أقسام عديدة ومختصة لكل ما تبحث عنه



Powered by vBulletin® Copyright ©2000 - 2019,