صالح الأداء عند الاستعلام SQL محدودة مقابل الدعوة الصف بأكمله؟

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

  •  08-07-2019
  •  | 
  •  

سؤال

وكم من فائدة أداء هناك عن طريق تحديد حقل مطلوب في الاستعلام بدلا من الاستعلام عن الصف بأكمله؟ على سبيل المثال، إذا كان لدي صف من 10 حقول ولكن بحاجة الى 5 حقول فقط في العرض، هل يستحق الاستعلام فقط أولئك 5؟ ما هي الفائدة الأداء مع هذا القيد في مقابل خطر الاضطرار إلى العودة وإضافة حقول في استعلام SQL في وقت لاحق إذا لزم الأمر؟

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

المحلول

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

نصائح أخرى

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

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

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

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

وبالطبع اذا تشمل مجالات إضافية فقاعة ميغا بايت المعادلة المنحرفة. ولكن تجربتي هي أن النفقات العامة الصفقة من نفس النظام، أو أكبر، من البيانات الفعلية ريتريفيد. أتذكر غامضة من قبل سنوات عديدة من مجرد "فارغة" طلب NOP TNS حوالي 100 بايت على السلك.

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

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

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

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