MongoDB索引优点和类型有哪些?怎样创建MongoDB索引?
Admin 2021-05-28 群英技术资讯 723 次浏览
索引是数据库中很重要的内容,对此,这篇文章就给大家分享关于MongoDB数据库索引的优点,索引的类型,索引的创建等等,有这方面学习需要的朋友可以了解看看,下面我们一起来了解MongoDB索引。
索引:特殊的数据结构,存储表的数据的一小部分以实现快速查询
优点:
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 index alter table drop index drop index index_name from table show 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"
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
MongoDB $type 操作符 描述 在本章节中,我们将继续讨论MongoDB中条件操作符 $type。 $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。 MongoDB 中可以使用的类型如下表所示: 类型 数字 备注 Double 1 String 2 Object 3 Array 4 Binary da..
MongoDB中更新文档的update()方法:1、命令为db.collection.update( criteria, objNew, upsert, multi );2、参数criteria用于指定一个查询,查询选择将要更新的目标记。
mongodb关闭数据库连接的方法:直接使用“db.close([forceClose],[callback]);”方法即可关闭数据库连接。
数据类型是数据库学习需要掌握的知识,对此这篇文章给大家分享有关MongoDB数据类型的内容,小编觉得挺实用的,需要的朋友可以参考学习,下面就跟随小编看看吧。
这篇文章主要给大家介绍了关于CentOS 7系统下SELinux阻止MongoDB启动问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008