проблемное мышление
Существует множество структур данных для индексов базы данных, например:哈希索引
,平衡二叉树索引
,B树索引
,B+树索引
и Т. Д.
В настоящее время наиболее популярными являютсяB+树索引
, задумывались ли вы когда-нибудь, почему индексы дерева B+ наиболее популярны и почему другие индексы широко не используются.
например, почему другие могут взять2-3
10000 зарплата, но я могу получить только一万
зарплата, вы думали об этом?
хэш-индекс
Все должны быть хорошо знакомы с хэшем — технологией, используемой в 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 красивых резюме