إضافة طرق عرض إلى قاعدة بيانات وأداء تم تسليم البائعين

StackOverflow https://stackoverflow.com/questions/3062474

سؤال

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

select ... from table1
union
select ... from table2
...
select ... from tableN

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

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

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

المحلول

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

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

شخصيا عندما يتعلق الأمر بوضع المنطق في التطبيق مقابل وضعه في ديسيبل أنا أميل نحو DB. في تجربتي ، من الأسهل نشر هذه الأنواع من التغييرات.

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

نصائح أخرى

لن تكون الرؤية أسرع (باستثناء وقت التطوير).

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

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