سؤال

كيف يحدد SQL Server ما إذا كان عمود الجدول يحتوي على ثبات منخفض؟

السبب في أنني أسأل هو أن Optimizer على الأرجح لن يستخدم فهرسًا على عمود الجنس (القيم "M" و "F"). ومع ذلك ، كيف يمكن أن تحدد Cardinality of the Pense Colled للوصول إلى هذا القرار؟

علاوة على ذلك ، إذا كان لديّ مليون إدخالات على الأرجح في طاولتي وإدخال واحد فقط في عمود النوع الاجتماعي كان "M" ، فهل يتمكن SQL Server من تحديد ذلك واستخدام الفهرس لاسترداد هذا الصف المفرد؟ أم أنها ستعرف فقط أن هناك قيمتان متميزتان فقط في العمود وعدم استخدام الفهرس؟

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

شكرا جزيلا.

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

المحلول

يرى الإحصائيات التي يستخدمها محسن الاستعلام في Microsoft SQL Server 2005 .

من خلال القيمة 1 "M" و 999999 'f' ، ستقدم الإحصائيات تقديرًا للكلام لـ 1 لـ 'm' ، وشيء قريب من 1 مليون لـ 'F'. ولكن ما إذا كان سيتم استخدام الفهرس أم لا ، فهناك المزيد من العوامل.

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

سيكون عليك إما قراءة المزيد أو إعطاء المزيد من التفاصيل. بعض الموارد الجيدة هي مدونات فريق QO وأعضاء الفريق:

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