欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 倒排索引与数据库索引

倒排索引与数据库索引

2025/12/14 3:59:53 来源:https://blog.csdn.net/caihuayuan4/article/details/147671083  浏览:    关键词:倒排索引与数据库索引

数据库索引

mysql索引以B+树作为存储结构,B+树的主要特点是,非叶子节点不存储数据,数据只存储在叶子节点上,并且所有叶子节点组成有序链表

主键索引(聚簇索引)

假设我们的表结构如下

CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(20) DEFAULT NULL COMMENT '名称',`bank_no` varchar(20) DEFAULT NULL COMMENT '银行卡号',`hobby` varchar(20) DEFAULT NULL COMMENT '兴趣爱好',PRIMARY KEY (`id`),UNIQUE KEY `user_bank_no` (`bank_no`,`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8

数据库主键索引对应的文档存储的表内容可表示为:

DocumentIdnamebank_nohobby
1鲁智深6201篮球、唱歌
200吴用5100篮球、旅游
3000花荣1234台球、旅游
5000柴进2245唱歌、游泳
5001武松5678篮球、游泳
5200杨志1345游泳、台球
8000宋江9987唱歌
10000卢俊义3347足球、旅游

主键索引的存储结构如下


图:主键索引存储结构
非主键索引

非主键索引存储结构



非主键索引的叶子节点只存储索引字段及主键,如果需要索引字段之外的信息,则需要根据主键再回表查询。
比如我们按照银行卡号查询用户名、兴趣爱好等字段,则会根据索引过滤后再回表查询完整信息,被称为是索引下推。

倒排索引

数据库索引是一种正排索引,上面的例子中,如果查询兴趣爱好为“游泳”的用户信息,则会触发全表扫描。这种情况下创建全文索引可很大程度的提高查询效率,而全文索引(full inverted index )就一种倒排索引(inverted file index )的实现。

如果是倒排索引,则文档存储的表内容可表示为:

NumbertextDocuments
1篮球1,200,5001
2唱歌1, 5000, 8000
3旅游200, 3000, 10000
4台球3000, 5200
5游泳5000, 5200
6足球10000

全文索引不仅可以存储文档的ID,还可以存储单词在text的位置信息(position)

NumbertextDocuments[(DocumentId: position)]
1篮球(1: 1),(200: 1), (5001: 1)
2唱歌(1: 2), (5000: 1), (8000: 1)
3旅游(200: 2), (3000: 2), (10000: 2)
4台球(3000: 1), (5200: 2)
5游泳(5000: 2), (5200: 1)
6足球(10000: 1)

最后,倒排索引作为一种索引结构,可以更好的定位数据,并能扩充一些搜索特性,但是也会占用更多的磁盘空间。



喜欢的朋友记得点赞、收藏、关注哦!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词