Індекс проти розділу


20

Чому не можна досягти підвищення продуктивності лише за допомогою індексів, щоб інші методи, такі як розділення таблиці, стали необхідними? Питання стосується лише продуктивності, звичайно, різні розділи можуть бути розміщені в різних просторах таблиць, що має інші ефекти, які неможливо досягти за допомогою індексів.

Або іншими словами, лише ефективність роботи: чи можна досягти таких же покращень продуктивності за допомогою індексів, як і при розподілі таблиць?


2
Замість того, щоб думати про індексацію та розподіл як про або як рішення для підвищення продуктивності, вам слід думати про це як про інструменти, які можна використовувати окремо або спільно для досягнення підвищення продуктивності у вашій базі даних.
ScottCher

Відповіді:


18

Ні, розділення дозволяє обмежити деякі сканування таблиці певним розділом. Індекси, як правило, марні, якщо ви повернете більше 2–4 відсотків даних таблиці. Якщо критерії вибору дозволяють локалізувати запит до певного розділу, інші розділи не потрібно буде сканувати.

Можливо, оптимізатору вдасться скористатися скануванням таблиці для одних розділів та індексів для інших. Я не бачив пояснювальних планів, які б свідчили про те, що відбувається.

Якщо у вас багато історичних даних, то запити на поточні дані можуть бути побудовані для обмеження розділів, які вважаються тими, що містять поточні дані.


3
Я ти створюєш розділи. Не забудьте вибрати правильний пристрій зберігання даних для кожної секції. Поставте фактичний розділ даних на швидкісний привід, а старший - інший тип.
Ніко-

7

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

У будь-якому випадку, індекси та розділи не конкурують за однакові переваги у використанні та продуктивності. Ви повинні знайти баланс у своїй базі даних.

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