سؤال

لدي جدول كبير يحتوي على أكثر من 10 ملايين السجلات في قاعدة بيانات SQL Server. يحتوي الجدول على نوع معين من البيانات لجميع الحالات الخمسين في الولايات المتحدة. لذلك إذا قمت بإنشاء 50 مشاهدة ، واحدة لكل ولاية ، من هذا الجدول ، هل سيتم تحسين أداء استفسارات من طلبي؟ اقتراحات أخرى؟

هل كانت مفيدة؟

المحلول

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

ما لم يتم فهرسة. 50 مشاهدة فهرسة هي على الأرجح مبالغة.

إذا كان لديك أداء بطيء مع 50 مليون صف (ليس كثيرًا بالفعل) ، فهذا مشكلة فهرسة.

يحرر:

لتبدأ ، سأستخدم استعلام مؤشر مفقود مرجح لمعرفة أين تحصل على أقصى استفادة من باك

نصائح أخرى

لا يمكن أن تحسن وجهات النظر العادية (غير المخصصة) الأداء - يمكن اعتبارها "اختصاصات" أو "أسماء مستعارة" للاستعلامات المختارة ، حيث لا يوجد بها هيكل مادي.

وجهات النظر المفهرسة هي وحش مختلف ، لكن لا يبدو أنك بحاجة إليها حتى الآن.

ما تحتاجه هو إنشاء فهارس مناسبة على الجدول الخاص بك ، وربما لإعادة تصميم الجدول (على سبيل المثال ، تقسيمه إلى عدة جداول).

إذا كنت تريد المزيد من المشورة المحددة ، فقم بنشر بنية الجدول وبعض الأمثلة على الاستعلامات النموذجية (تلك التي تريد تحسينها).

أنت على المسار الصحيح:

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

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

اقتراح واحد بسيط:

use [YourDataBase]
select * from sys.dm_db_missing_index_details as ddmid

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

يمكن أن تكون Views BTW قتلة للأداء إذا كنت تستخدم طرق عرض الاتصالات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top