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

非主键索引的叶子节点只存储索引字段及主键,如果需要索引字段之外的信息,则需要根据主键再回表查询。
比如我们按照银行卡号查询用户名、兴趣爱好等字段,则会根据索引过滤后再回表查询完整信息,被称为是索引下推。
倒排索引
数据库索引是一种正排索引,上面的例子中,如果查询兴趣爱好为“游泳”的用户信息,则会触发全表扫描。这种情况下创建全文索引可很大程度的提高查询效率,而全文索引(full inverted index )就一种倒排索引(inverted file index )的实现。
如果是倒排索引,则文档存储的表内容可表示为:
| Number | text | Documents |
|---|---|---|
| 1 | 篮球 | 1,200,5001 |
| 2 | 唱歌 | 1, 5000, 8000 |
| 3 | 旅游 | 200, 3000, 10000 |
| 4 | 台球 | 3000, 5200 |
| 5 | 游泳 | 5000, 5200 |
| 6 | 足球 | 10000 |
全文索引不仅可以存储文档的ID,还可以存储单词在text的位置信息(position)
| Number | text | Documents[(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) |
最后,倒排索引作为一种索引结构,可以更好的定位数据,并能扩充一些搜索特性,但是也会占用更多的磁盘空间。
文章均来自互联网如有不妥请联系作者删除QQ:314111741 地址:http://www.mqs.net/post/15202.html
添加新评论