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




  • 相关阅读:
    # ES6基础
    # yarn简单使用
    # laravel框架中的配置
    需求概述开发进度09
    需求概述开发进度08
    需求概述开发进度07
    需求概述开发进度06
    需求概述开发进度05
    需求概述开发进度04
    需求概述开发进度03
  • 原文地址:https://www.cnblogs.com/xinghebuluo/p/2291155.html
Copyright © 2011-2022 走看看