سؤال

وايم محاولة لخلق وجهة نظر من تماما استعلام تحديد معقدة وانها لن تسمح لي وضع فهرس مجمع عليها، لأن لدي لاستخدام الاستعلامات الفرعية وبعض دالات التجميع.

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

ووللقراءة فقط والجداول الأساسية لطريقة العرض ووفقط الحصول على تحديث من قبل الاستيراد بكميات كبيرة مرة واحدة في اليوم. لا استطيع ان ارى لماذا النتائج لا يمكن أن يكون مؤقتا.

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

وشكرا مقدما.

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

المحلول

وأعتقد أن الجواب الذي تبحث عنه هو: لا تستخدم من أجل القيام بذلك. استخدام جدول مع حقول corresonding إلى الحقول عاد تشكيل الاستعلام SQL. أتمتة الاستعلام لملء هذا الجدول

نصائح أخرى

والجواب القصير هو أن فهرس متفاوت المسافات لا يمكن إنشاء، وذلك للأسباب التي ذكرتها.

وعندما تسأل عن وسيلة لتخزين نتائج الاستعلام معقد، الكائن الوحيد الآخر أن SQL Server يوفر (وسوف يحل مشكلتك) هو جدول.

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

إذا كنت تستخدم جهاز مباحث أمن الدولة (SQL خادم خدمات تكامل) وهذا هو الشيء تافهة نسبيا لإضافة.

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

وماذا كنت بناء الأصوات مثل مستودع البيانات، لذلك الخيار الأفضل لك هو لمعالجة البيانات مرة واحدة هو الحال في النظام. يمكنك بناء جداول جديدة من denormalised (أو مهما آخر كنت تعديله) ومؤشر عليها للسماح الاستعلام سريع.

وبعد ذلك يمكنك بناء وجهات النظر حول رأس هذه الجداول إذا كنت في حاجة إليها.

وعند استخدام المجاميع داخل عرض مفهرسة تحتاج إلى استخدام COUNT_BIG () بدلا من COUNT () وإلا لن يتم إنشاء عرض

وأيضا إذا كنت لا تعمل على الطبعة المؤسسة تحتاج إلى توفير التلميح NOEXPAND وإلا فإن محسن عدم استخدام عرض

SELECT *
FROM YourView WITH(NOEXPAND)
WHERE ....

وربما كنت لا تحتاج إلى عرض لكنك فقط لم يكن لديك عشر الفهارس الصحيح على الجداول، يمكنك نشر DDL الجداول (بما في ذلك مؤشرات والمعوقات)

وكان لي نفس المشكلة وانتهى وضع الاستعلامات الفرعية في فهرس متفاوت المسافات المشاهدات أنفسهم.

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