zoukankan      html  css  js  c++  java
  • mongodb指南(翻译)(十七) developer zone 索引(一)简介

    索引通常可以显著的提高查询性能。仔细考虑你的应用中会用到的查询种类这样你就可以定义相关的索引了。一旦索引定义完成,在mongodb中实际创建它们是很简单的。

    Mongodb的索引在概念上和MySQL等关系型数据库的索引非常相似。当你在某些情境下需要在MySQL中创建一个索引,这样的情境同样适用于Mongodb。

    基本概念

    一个索引就是一个数据结构,它收集集合中文档的指定字段的值。这种数据结构被Mongo的查询优化器用来对集合中文档进行快速分类和排序。从形式上讲,这些索引按“B-Tree”索引形式来实现的。

    在shell中,你可以调用ensureIndex()创建一个索引,参数是一个指定一个或多个关键字的文档。参考前面mongo使用基本知识中例子,我们可以像下面这样对"j"字段建立索引:

    db.things.ensureIndex({j:1});

    ensureIndex()函数仅在该索引不存在时创建它。

    一旦在集合上某个字段建立了索引,对这个字段的随机查询的访问速度会很快。没有这个索引的话,mongodb需要遍历所有文档来匹配查询中的字段:

    db.things.find({j:2}); // fast - uses index
    db.things.find({x:3}); // slow - has to check all because 'x' isn't indexed

    在shell中查看集合中已经存在的索引,你可以运行:

    db.things.getIndexes()

    要查看数据库中所有的索引,可以运行:

    db.system.indexes.find()

    创建选项

    ensureIndex函数的第二个参数是携带创建选项的文档/对象。这些选项有:

    选项 默认值
    background true/false false
    dropDups true/false false
    unique true/false  false
    sparse true/false false
    v 索引版本。0=早于v2.0版本,1=更小/更快(当前) 1 in v2.0.除非特殊情境,默认使用1




  • 相关阅读:
    CRC全套算法 CRC4,CRC5,CRC7,CRC8,CRC16,CRC32,CRC32 mpeg-2
    ubuntu18.04使用vscode报pylint is not install错误
    [转]C结构体之位域(位段/位域)
    获取gcc和clang的内置宏定义
    Win10下使用MinGW到指定路径编译C-C++文件
    【YM】ssh命令 远程登录Linux
    Linux环境下搭建Qt5.9开发环境
    WSL-Ubuntu-更换apt源为阿里源
    git常用命令
    Lucene的基本使用
  • 原文地址:https://www.cnblogs.com/xinghebuluo/p/2291155.html
Copyright © 2011-2022 走看看