Далі - це просто божевільна скачка та захоплення ...
Якщо ви залишите всі дані в одній таблиці (без розділів), у вас з'явиться O (log n) час пошуку за допомогою ключа. Візьмемо найгірший індекс у світі, двійкове дерево. Кожен вузол дерева має рівно один ключ. Ідеально збалансоване двійкове дерево з 268 455 455 (2 ^ 28 - 1) деревними вузлами було б заввишки 28. Якщо ви розділите це бінарне дерево на 16 окремих дерев, ви отримаєте 16 двійкових дерев, кожне з 16 777 215 (2 ^ 24 - 1) вузли дерев висотою 24. Шлях пошуку зменшується на 4 вузли, зменшення висоти на 14,2857%. Якщо час пошуку в мікросекундах, скорочення часу пошуку на 14,2857% є нульовим до незначного.
Зараз у реальному світі індекс BTREE матиме треноди з кількома ключами. Кожен пошук BTREE здійснював бинарний пошук всередині сторінки з можливим порядком на іншій сторінці. Наприклад, якщо кожна сторінка BTREE містила 1024 клавіші, висота дерева 3 або 4 була б нормою, дійсно коротка висота дерева.
Зауважте, що розділення таблиці не зменшує висоту BTREE, яка вже мала. Враховуючи розділення на 260 мільйонів рядів, є навіть велика ймовірність мати кілька BTREE з однаковою висотою. Пошук ключа може щоразу проходити через усі кореневі сторінки BTREE. Тільки один виконає шлях потрібного діапазону пошуку.
Тепер розгорніть це питання. Усі розділи існують на одній машині. Якщо у вас немає окремих дисків для кожного розділу, ви матимете обертання дискового вводу-виводу та шпинделя як автоматичне вузьке місце поза виконанням пошуку розділів.
У цьому випадку розділення за базою даних нічого не купує, якщо ідентифікатор є єдиним пошуковим ключем.
Розбиття даних має слугувати для групування даних, які логічно та згуртовано входять в один клас. Продуктивність пошуку кожного розділу не повинна бути головним фактором, якщо дані правильно згруповані. Коли ви досягли логічного розподілу, сконцентруйтесь на часі пошуку. Якщо ви просто розділяєте дані лише за допомогою id, можливо, багато рядків даних ніколи не можуть отримати доступ для читання чи запису. Тепер це має бути головним питанням: Знайдіть усі ідентифікатори, до яких найчастіше звертаються, і розділ за цим . Усі рідше доступні ідентифікатори, що мають доступ, повинні розміщуватися в одній великій архівній таблиці, яка все ще доступна шляхом пошуку індексу для запиту "раз у синій місяць".
Загальний вплив повинен мати, як мінімум, два розділи: Один для ідентифікаторів, які часто отримують доступ, а другий для розділення інших. Якщо ідентифікатори, які часто звертаються, досить великі, ви можете необов’язково розділити це.