NoSQL——数据索引与排序

数据库索引建立在哈希函数,B树和B+树的基础上。

MongoDB

  1. MongoDB默认会在所包含的所有集合的_id属性上创建一个索引。
  2. 注意解释函数的调用,这是一个查询性能的测量函数,输出也是一个文档:
    • db.jihe.find().explain();
    • Cursor: 游标用来返回查询结果集。
    • Nscanned:被扫描的尸体总数,使用索引时对应索引实体的总数。
    • nscannedObject:扫描的文档总数。
    • N:返回的文档总数。
    • Millis:查询的耗时,单位是毫秒。
    • indexBounds:表示查新匹配的索引范围的最小建和最大键。
  3. 在MongoDB中,关键字ensureIndex完成了大部分创建索引的工作。如:db.集合名.ensureIndex( { 列名 : 1 (-1) } ),表示升序或者降序。获得所有索引的列表使用getIndexs()函数。重新建立索引使用reIndex(),也可以使用runCommand(),例如db.runCommand( { reIndex : '集合名' } )。可以使用dropIndex命令删除索引。
  4. 如果需要,可以使用hint方法强制查询使用特定的索引,如强制使用降序:db.集合名.find( { movie_id : 1 } ).hint( { movie_id : -1} )。
  5. 可以创建组合索引,如:db.集合名.ensureIndex( { 列名 : 1 (-1) , 列名 : 1 (-1) .....} )。创建后可以单用。
  6. 组合索引也可以包含嵌套字段。
  7. 可以通过显示声明来创建一个稀疏索引:db.集合名.ensureIndex( { 列名 : 1 (-1) , { sparse : true } } )。如果字段无值就会被忽略,所以稀疏索引可能没有引用集合中的所有文档。
  8. 可以创建唯一索引:db.集合名.ensureIndex( { 列名 : 1 (-1) , { unique : true } } )。但是列名必须各不相同,否则不会创建,除非显式声明除第一个条目外,所有重复都可以丢弃。这样的显示声明:db.集合名.ensureIndex( { 列名 : 1 (-1) , { unique : true , dropDups : true } } )。如果列名为空,则保存null,但是只保存第一个。
  9. MongoDB中可以创建多重键,即为数组中的每个唯一值创建一个键。

CouchDB

  1. CouchDB的索引功能是自动的,在数据被修改后,第一次读取时触发。CouchDB遵循MapReduce风格的数据操作。

Apache Cassandra

  1. 像HBase和Hypertable这样的列族数据库默认基于行健进行排序和索引。还可以支持次级索引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值