هل يستخدم SQL Server مؤشر مركب عند وجود عمود واحد فقط في جملة أين؟

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

سؤال

قل لدي طاولة:

CREATE TABLE Users (
    Id INT IDENTITY (1, 1),
    FirstName VARCHAR(40),
    LastName VARCHAR(40)
)

الاستعلامات عادة ما تكون على الاسم الأول أو الكنية, ، ولكن أيضا على الاسم الأول و الكنية.

إذا قمت بإنشاء فهرس غير متفاوت المسافات الاسم الأول وآخر على الكنية, ، ثم أول اثنين من استفسارتين يتم تقديمه ل. على ما يبدو، سوف يستخدم SQL Server تقاطع الفهرس للاستعلام الآخر.

بدلا من ذلك، إذا كان لدي المفهشات على (الاسم الأول) وعلى (اسم العائلة، الاسم الأول)، هل يمكن / هل يستخدم SQL Server الفهرس الثاني للاستعلامات فقط الكنية وكذلك الاستفسارات على كليهما؟

هل يقوم SQL Server Store بتخزين أجزاء مؤشر اليسار إلى اليمين أو اليمين إلى اليسار؟ وبعبارة أخرى: هل ستقوم ببناء المفتاح باسم LastnameFirstName أو FirstnamelastName؟ أم أنها مجانية لاختيار واحد بشكل تعسفي؟

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

المحلول

يمكن / هل يستخدم SQL Server الفهرس (اسم العائلة، الاسم الأول) للاستعلامات على اسم العائلة فقط وكذلك الاستعلامات على كليهما؟

نعم، ستستخدم قاعدة البيانات الفهرس (اسم العائلة، الاسم الأول) للاستعلامات على اسم العائلة. سوف تكون ليس استخدم هذا الفهرس للاستعلامات فقط على الاسم الأول.

هل تخزن أجزاء مؤشر مركب من اليسار إلى اليمين أو اليمين إلى اليسار؟

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

نصائح أخرى

نعم، إذا قمت بالاستعلام عن اسم العائلة وحده، فيجب عليه استخدام فهرس (LastName، FirstName). لذلك سيتم استخدامه عند الاستعلام عن اسم العائلة وحده، أو اسم العائلة واسم الاسم الأول معا.

المبدأ التوجيهي العام هو ضمان ظهور العمود بأكبر انتقائية أولا في مؤشر المركب حيث يوفر هذا الأكثر فائدة / يضيق النتائج أسفل عاجلا قبل الأعمدة التالية، أقل انتقائية.

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

أيضا، كما لم يتم ذكرها حتى الآن وتوفيرك على الأقل على SQL Server 2005: اسمحوا لي أن رمي في جملة تضمين المؤشرات غير المكعبة. إنه إضافة مفيدة للغاية ولكنها مفيدة حقا إلى أي استراتيجية فهرسة.

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