Главная фишка B+ Tree

Поиск по диапазону является сильной стороной B+ деревьев. Представь, что тебе нужны все заказы за последний месяц:

SQL
SELECT * FROM orders 
WHERE order_date BETWEEN '2024-01-01' AND '2024-01-31';

Как это работает под капотом

  1. Находим старт: Дерево делает один быстрый спуск от корня O(log N), чтобы найти первую запись (1 января).
  2. Скользим по списку: Дальше база просто идет вправо по связанному списку листовых узлов (по указателям next).
  3. Собираем урожай: Она просто читает страницы подряд, пока не наткнется на дату больше 31 января.

На примере поиска чисел давай проследим этот путь.

  1. Cами данные лежат только в листах, но в узлах дерева лежат так называемые маршрутизаторы (в англ литературе routing keys). Это облегченные копии данных, что дерево могло эффективно вести поиск по значению.
  2. Пунктирные стрелки показывают, что связь с листами есть и других нод в дереве. Нас интересуют 2 зеленых листа, так как в них лежат данные.