Насколько B-tree индекс ускоряет поиск

«Насколько B-tree индекс ускоряет поиск» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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)
  • Оптимален для высокоселективных запросов (уникальные/почти уникальные значения)
  • Занимает дополнительное место на диске
  • Медленнее при частых вставках/обновлениях из-за ребалансировки