关闭

NoSQL——数据索引与排序

标签: nosql索引
1581人阅读 评论(0) 收藏 举报
分类:

数据库索引建立在哈希函数,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这样的列族数据库默认基于行健进行排序和索引。还可以支持次级索引。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:42176次
    • 积分:808
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:22篇
    • 译文:0篇
    • 评论:3条
    最新评论