Оскорбленный интервьюером, почему вы знаете, почему в индексе используется дерево B+?

MySQL
Оскорбленный интервьюером, почему вы знаете, почему в индексе используется дерево B+?

проблемное мышление

Существует множество структур данных для индексов базы данных, например:哈希索引,平衡二叉树索引,B树索引,B+树索引и Т. Д.

В настоящее время наиболее популярными являютсяB+树索引, задумывались ли вы когда-нибудь, почему индексы дерева B+ наиболее популярны и почему другие индексы широко не используются.

например, почему другие могут взять2-310000 зарплата, но я могу получить только一万зарплата, вы думали об этом?

хэш-индекс

Все должны быть хорошо знакомы с хэшем — технологией, используемой в HashMap, о которой мы часто говорим. Хэш-индекс его检索效率Очень, поиск по индексу может быть一次定位.

У многих могут возникнуть сомнения: если эффективность Hash-индекса настолько высока, то зачем использовать Hash-индекс вместо B-Tree-индекса?

что угодно两面性Да, то же самое верно и для хэш-индексов.Хотя хэш-индексы эффективны, сами хэш-индексы также дают много преимуществ благодаря своей специфике.限制а также弊端, в основном включают следующее:

Причина первая:

Hash索引不能使用范围查询

Хэш-индекс может удовлетворить только "=","IN"и"<=>«Запрос (обратите внимание, что и — разные операции) нельзя использовать范围查询, например ГДЕ цена > 100.

Поскольку хеш-индекс сравнивается после операции хешированияHash值, поэтому его можно использовать только для равной фильтрации, а не на основе范围的过滤.

Причина вторая:

Hash索引不能利用部分索引键查询.

за复合索引, рассчитывается хэш-индексHash值, является ключом составного индекса合并后Снова一起计算Хэш-значение вместо单独计算Хэш-значение.

Поэтому при запросе через первый один или несколько индексных ключей составного индекса нельзя использовать хэш-индекс.

Причина третья:

Hash索引在任何时候都不能避免表扫描.

Хэш-индекс предназначен для хранения хеш-значения результата хеш-операции и соответствующей информации указателя строки в хеш-таблице после того, как ключ индекса подвергся хеш-операции.

так как不同索引键существует相同Hash值, поэтому запрос не может быть выполнен напрямую из хеш-индекса, или соответствующее сравнение должно быть выполнено путем обращения к фактическим данным в таблице, и будет получен соответствующий результат.

хэш-индекс отсутствует

Сбалансированный индекс двоичного дерева

также известен какAVLДерево. В дополнение к основным свойствам бинарного дерева поиска у него также есть очень важная особенность: его左子树а также右子树оба平衡二叉树.

и левое и правое поддеревья深度之差Абсолютное значение (коэффициента баланса) не превышает 1. То есть коэффициент баланса каждого узла дерева AVL может быть только -1, 0 и 1 (высота левого поддерева минус высота правого поддерева).

Причина ликвидации

  • Высота дерева слишком велика, чем выше высота, тем медленнее скорость поиска

  • Он поддерживает поиск по диапазонам, но ему нужно выполнять циклический поиск.

Например, я хочу найти大于5Данные

На первом этапе я сначала нахожу 5, а затем следую правилам двоичного дерева на дереве.回旋Найдите другие данные больше, чем 5 6, 7, 8, 9, 10. . .

Если данных больше 5, скорость очень низкая.

Индекс B-дерева

каждый может видетьB树а также二叉树Самая большая разница в том, что он может хранить два значения в одном узле, а это значит, что его树高度, чем высота бинарного дерева更低,это查询скорость更快. это его преимущество

Тогда почему бы не использовать его в конце концов, или потому что он в范围查找когда есть回旋запросный вопрос. Точно так же эффективность упорядочивания путем сортировки также очень низка, потому что данные в дереве нужно сортировать вручную.

Окончательный босс: дерево B+

Это обновленная версия номера B,B+дерево по сравнению сBдерево, новый叶子节点а также非叶子节点связь.

叶子节点содержитkeyа такжеvalue, ключ хранит числа 1-10, значение хранит адрес хранения данных,非叶子节点содержит толькоkey, не содержит значения.

все соседние листовые узлы包含Для нелистовых узлов используйте链表в совокупности существует определенная顺序排序,тем самым范围查询Очень эффективный.

Например, мы хотим найти大于5Данные:

  • Сначала мы находим позицию 5

  • Затем просто выньте все данные после 5, потому что это упорядоченный связанный список,已经排好序了

мы вorder byПочему вы хотите сортировать使用索引进行排序, поэтому.

Если вы все еще не понимаете, пожалуйста, оставьте мне сообщение

Обратите внимание на публичный аккаунт WeChat: IT-брат

Ответ: Видеоруководство по практическому проекту Java: вы можете получить 200G, 27 комплектов видеоурока по практическому проекту

Re: Маршрут обучения Java, вы можете получить самую последнюю и самую полную дорожную карту обучения

Re: Java eBook, вы можете получить 13 обязательных к прочтению книг для лучших программистов

Ответ: полный набор учебных пособий по Java, которые вы можете получить: основы Java, веб-приложение Java, все учебные пособия по JavaEE, включая весеннюю загрузку и т. д.

Re: Шаблон резюме, вы можете получить 100 красивых резюме