B-tree یا بی تری یک ساختار درختی جست‌وجوی متوازن و چندشاخه است که کلیدها را مرتب نگه می‌دارد. حرف B در منابع تاریخی تعاریف مختلفی داشته و بهتر است آن را به یک واژه قطعی مانند Binary تعبیر نکنیم.

برخلاف درخت دودویی، هر گره بی تری می‌تواند چندین کلید و فرزند داشته باشد. به همین دلیل طراحی آن برای خواندن و نوشتن صفحه‌ای دیسک مناسب است.

ساختار و پیچیدگی

  • کلیدها در گره مرتب‌اند و جست‌وجو میان بازه‌های کلید انجام می‌شود.
  • درخت متوازن است و همه برگ‌ها در عمق یکسان قرار دارند.
  • جست‌وجو، درج و حذف معمولاً پیچیدگی لگاریتمی نسبت به تعداد کلیدها دارند.
  • بسیاری از دیتابیس‌ها برای ایندکس از گونه B+ tree استفاده می‌کنند. در B+ tree داده یا اشاره‌گر رکورد معمولاً در برگ‌ها قرار می‌گیرد.

چه زمانی مناسب است؟

عملیاتبی تری یا B+ treeنکته
WHERE id = 42جست‌وجوی کلیدبرای کلید اصلی مناسب است
WHERE price BETWEEN 100 AND 500پویش بازهبرتری نسبت به هش ایندکس در بازه‌های مرتب
ORDER BY created_atخواندن مرتببا ایندکس منطبق ممکن است هزینه مرتب‌سازی کاهش یابد
WHERE name LIKE 'sam%'جست‌وجوی پیشوندوابسته به Collation و برنامه اجرا
CREATE INDEX idx_orders_customer_created ON orders(customer_id, created_at);
EXPLAIN SELECT id FROM orders WHERE customer_id = 15 ORDER BY created_at DESC;

نکته فنی

ایندکس بی تری با درخت دودویی جست‌وجو یکی نیست. انتخاب ایندکس را با EXPLAIN و رفتار واقعی داده بررسی کنید.

اصطلاحات مرتبط: ایندکسینگ، بهینه‌سازی کوئری، جدول هش، دیتابیس.