源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-11-15 03:54 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:MongoDB数据库中索引(index)详解
[b]索引:特殊的数据结构,存储表的数据的一小部分以实现快速查询[/b] [b]优点:[/b] 1、大大减少了服务器需要扫描的数据量 2、索引可以帮助服务器避免排序或使用临时表 3、索引可以将随机io转换为顺序io 索引评估:三星(非常好) 一星:索引如果能将相关的记录放置到一起 二星:索引中数据的存储顺序与查找标准中顺序一致 三星:如果索引中包含查询中所需要的全部数据:(覆盖索引) DBA书:关系型数据库索引设计与优化 索引类别: 顺序索引 散列索引:将索引映射至散列桶上,映射是通过散列函数进行的 评估索引的标准: 访问类型:做等值比较用散列索引,用范围比较时用顺序索引 访问时间: 插入时长: 删除时长: 空间开销: 顺序索引: 聚集索引:如果某记录文件中的记录顺序是按照对应的搜索码指定的顺序排序,聚集索引页成为主索引 非聚集索引:搜索码中的指定的次序与记录文件中的记录次序不一致 有聚集索引的数据文件,也叫做索引顺序文件 根据索引中是否为每个记录相应的创建索引项,可分为稠密索引和稀疏索引 多级索引:(但对频繁修改的数据,性能很差) 辅助索引必须是稠密索引 B+树索引:顺序索引 Balance Tree:平衡树索引 顺序索引的特性: 全值匹配:[code]Name='user12'[/code] 匹配最左前缀:[code]Name LIKE  'User1%',无效:Name LIKE '%User1%'[/code] 匹配列前缀:[code]Name LIKE  'User1%',无效:Name LIKE '%User1%'[/code] 匹配范围值 精确匹配某一列并范围匹配另外一列: 只访问索引的查询 散列索引: 散列函数: 分布随机 分布均匀 适用场景: 精确匹配:=,IN(),<=> [b]Mysql:全文索引,fulltext[/b] 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创建索引: [img]http://files.jb51.net/file_images/article/201611/201611280841121.png[/img] 查看所有: [img]http://files.jb51.net/file_images/article/201611/201611280841122.png[/img] 默认在id上创建了主索引 唯一索引: [code]db.collection.ensureIndex({"user_id":1},{unique:true})[/code] sparse index:稀疏索引 [code]db.collection.ensureIndex({"user_id":1},{sparse:true})[/code] Mongodb: 索引可以创建在collection上,也可以创建在子文档中 Mongodb索引类型: 单键索引 组合索引 多键索引: 空间索引 文本索引 hash索引 hash索引: [img]http://files.jb51.net/file_images/article/201611/201611280841133.png[/img] 删除索引: [img]http://files.jb51.net/file_images/article/201611/201611280841134.png[/img] 或者 [img]http://files.jb51.net/file_images/article/201611/201611280841135.png[/img] db.mycoll.dropIndexes():删除mycoll的所有索引 查询过程:explain [img]http://files.jb51.net/file_images/article/201611/201611280841136.png[/img] 扫描了100个数据 创建索引后,只扫描一个数据 [img]http://files.jb51.net/file_images/article/201611/201611280841137.png[/img] 指定索引: [img]http://files.jb51.net/file_images/article/201611/201611280841138.png[/img] 创建组合索引: [img]http://files.jb51.net/file_images/article/201611/201611280841139.png[/img] 通过组合索引查询:
> 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"
}
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部