Різниця між кластерним пошуком індексу та некластеризованим пошуком індексу


10

Яка різниця між пошуком індексу кластеру (CI) та неіндексованого індексу (NCI)? Чи працює один краще, ніж інший?

Причину, про яку я прошу, це те, що у мене є таблиця з 50 мільйонами рядків і 150 стовпців. Він має стовпець, названий IDвизначеним як кластерний індекс. На ньому є ще один NCI з тим самим ідентифікаційним ключем індексу та семи- included стовпцями. Мені здається, що індекс NC тут є дублікатом і його можна сміливо скинути.

Тож я хочу отримати кілька порад / порад експертів, якщо їх можна безпечно відкинути чи слід залишати цілими?


Ви хочете сказати, що ВСІ стовпці включені до жодного кластерного показника?
Ян Рінроуз

Ні. У таблиці є 150 стовпців, в яких стовпчик ідентифікатора визначений як CI, і він має індекс NCI з знову стовпцем ідентифікатора як індексний ключ і ще 7 стовпців, що включають.
SQLPRODDBA

Тоді Пол Уайт, здається, дав правильну відповідь, проте я сумніваюся, чи слід змінити таблицю "базового" з кластеризованої таблиці на купу. Або навіть розділити таблицю вгору залежно від того, наскільки часто оновлюються різні стовпці, щоб зменшити вартість реєстрації транзакцій.
Ян Рінроуз

Відповіді:


26

Некластеризований індекс, який має ті самі ключі (ключі) *, як і кластерний індекс, все ще може бути корисним, оскільки некластерний індекс, як правило, буде меншим і щільнішим. Пам'ятайте, що кластерний індекс включає всі рядкові дані, тому зазвичай це найширший (найменш щільний) індекс.

* Ті ж стовпчики ключів у тій же послідовності сортуються однаково (asc / desc).

Для одиночного пошуку (пошук, що використовує предикат рівності в унікальний індекс), головна відмінність - це припущений більший шанс, що індексна сторінка (и) потрібна, щоб знайти цей єдиний запис вже в пам'яті. При рівних умовах некластеризований індекс зі 100 сторінками має більше шансів, ніж кластерний індекс, що зберігається на 10000 сторінках.

Для будь-якого іншого виду пошуку, окрім сингтона, також буде компонент сканування. Частина сканування також виграє від більшої щільності некластеризованого індексу (більше рядків на сторінці). Навіть якщо сторінки мають надходити з постійного сховища, швидше читати менше сторінок.

Ви повинні перевірити системну документацію, запитати у людини, яка додала індекс, та / або шукати коментарі до коду, щоб зрозуміти, чому цей індекс існує. Вам також потрібно уважно перевірити повне визначення індексу , включаючи стиснення, і переглянути сценарії обслуговування індексу. Можуть бути й інші особливі причини наявності некластеризованого індексу (наприклад, можливість відновлення в Інтернеті).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.