Ответ
B-tree индексы ускоряют поиск, вставку и удаление данных, обеспечивая сложность O(log n). В сравнении с линейным поиском O(n) это значительное улучшение.
Пример:
// Без индекса: O(n)
for _, item := range items {
if item.ID == target { return item }
}
// С B-tree индексом: O(log n)
found := btree.Search(target)
Нюансы:
- Эффективен для диапазонных запросов (
WHERE x BETWEEN a AND b) - Оптимален для высокоселективных запросов (уникальные/почти уникальные значения)
- Занимает дополнительное место на диске
- Медленнее при частых вставках/обновлениях из-за ребалансировки