MongoDB数据库中索引(index)详解

MongoDB数据库中索引(index)详解,第1张

概述索引:特殊的数据结构,存储表的数据的一小部分以实现快速查询优点:1、大大减少了服务器需要扫描的数据量

索引:特殊的数据结构,存储表的数据的一小部分以实现快速查询

优点:

1、大大减少了服务器需要扫描的数据量

2、索引可以帮助服务器避免排序或使用临时表

3、索引可以将随机io转换为顺序io

索引评估:三星(非常好)

一星:索引如果能将相关的记录放置到一起

二星:索引中数据的存储顺序与查找标准中顺序一致

三星:如果索引中包含查询中所需要的全部数据:(覆盖索引)

DBA书:关系型数据库索引设计与优化

索引类别:

顺序索引

散列索引:将索引映射至散列桶上,映射是通过散列函数进行的

评估索引的标准:

访问类型:做等值比较用散列索引,用范围比较时用顺序索引

访问时间:

插入时长:

删除时长:

空间开销:

顺序索引:

聚集索引:如果某记录文件中的记录顺序是按照对应的搜索码指定的顺序排序,聚集索引页成为主索引

非聚集索引:搜索码中的指定的次序与记录文件中的记录次序不一致

有聚集索引的数据文件,也叫做索引顺序文件

根据索引中是否为每个记录相应的创建索引项,可分为稠密索引和稀疏索引

多级索引:(但对频繁修改的数据,性能很差)

辅助索引必须是稠密索引

B+树索引:顺序索引

Balance Tree:平衡树索引

顺序索引的特性:

全值匹配:name='user12'

匹配最左前缀:name liKE  'User1%',无效:name liKE '%User1%'

匹配列前缀:name liKE  'User1%',无效:name liKE '%User1%'

匹配范围值

精确匹配某一列并范围匹配另外一列:

只访问索引的查询

散列索引:

散列函数:

分布随机

分布均匀

适用场景:

精确匹配:=,IN(),<=>

MysqL:全文索引,fulltext

sphinx,lucene

空间索引:必须使用空间索引函数获取相应的查询结果

主键、唯一键

MysqL:创建索引

create index index_name on table (col1,…)alter table add indexalter table drop indexdrop index index_name from tableshow indexes from table

Mongodb创建索引:

ID字段就有主索引

在name创建索引:

查看所有:

默认在ID上创建了主索引

唯一索引:

db.collection.ensureIndex({"user_ID":1},{unique:true})

sparse index:稀疏索引

db.collection.ensureIndex({"user_ID":1},{sparse:true})

Mongodb:

索引可以创建在collection上,也可以创建在子文档中

Mongodb索引类型:

单键索引

组合索引

多键索引:

空间索引

文本索引

hash索引

hash索引:

删除索引:

或者

db.mycoll.dropIndexes():删除mycoll的所有索引

查询过程:explain

扫描了100个数据

创建索引后,只扫描一个数据

指定索引:

创建组合索引:

通过组合索引查询:

> db.testcoll.find({name:'User19'}).hint({name:1,Age:1}).explain(){ "cursor" : "BtreeCursor name_1_Age_1","ismultikey" : false,"n" : 1,"nscannedobjects" : 1,"nscanned" : 1,"nscannedobjectsAllPlans" : 1,"nscannedAllPlans" : 1,"scanAndOrder" : false,"indexOnly" : false,"nYIElds" : 0,"nChunkSkips" : 0,"millis" : 0,"indexBounds" : {  "name" : [   [    "User19","User19"   ]  ],"Age" : [   [    {     "$minelement" : 1    },{     "$maxElement" : 1    }   ]  ] },"server" : "stu:27017"}
您可能感兴趣的文章:MongoDB索引使用详解MongoDB的基础查询和索引 *** 作方法总结MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划MongoDB中创建索引需要注意的事项pymongo给mongodb创建索引的简单实现方法MongoDB查询字段没有创建索引导致的连接超时异常解案例分享MongoDB学习笔记(六) MongoDB索引用法和效率分析mongodb处理中文索引与查找字符串详解pymongo为mongodb数据库添加索引的方法深入理解MongoDB的复合索引 总结

以上是内存溢出为你收集整理的MongoDB数据库中索引(index)详解全部内容,希望文章能够帮你解决MongoDB数据库中索引(index)详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1152599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存