• MongoDB索引创建(5)


    索引创建

    1:索引提高查询速度,降低写入速度,权衡常用的查询字段,不必在太多列上建索引

    2. 在mongodb中,索引可以按字段升序/降序来创建,便于排序

    3. 默认是用btree来组织索引文件,2.4版本以后,也允许建立hash索引.

    查看查询计划

    db.find(query).explain();

    "cursor" : "BasicCursor", ----说明没有索引发挥作用

    "nscannedObjects" : 1000 ---理论上要扫描多少行

    cursor" : "BtreeCursor sn_1", 用到的btree索引

    索引常用命令:

    查看当前索引状态: db.collection.getIndexes();

    db.articles.getIndexes();

    创建普通的单列索引:db.collection.ensureIndex({field:1/-1});  1是升续 2是降续

    db.articles.ensureIndex({title:1})

    删除单个索引

    db.collection.dropIndex({filed:1/-1});

    一下删除所有索引

    db.collection.dropIndexes();

    创建多列索引 

    db.collection.ensureIndex({field1:1/-1, field2:1/-1});

    创建子文档索引

    db.collection.ensureIndex({filed.subfield:1/-1});

     

    创建唯一索引:

    db.collection.ensureIndex({filed.subfield:1/-1}, {unique:true});

    创建稀疏索引:

    稀疏索引的特点------如果针对field做索引,针对不含field列的文档,将不建立索引.

    与之相对,普通索引,会把该文档的field列的值认为NULL,并建索引.

    适宜于: 小部分文档含有某列时.

    db.collection.ensureIndex({field:1/-1},{sparse:true});

    > db.tea.find();

    { "_id" : ObjectId("5275f99b87437c610023597b"), "email" : "a@163.com" }

    { "_id" : ObjectId("5275f99e87437c610023597c"), "email" : "b@163.com" }

    { "_id" : ObjectId("5275f9e887437c610023597e"), "email" : "c@163.com" }

    { "_id" : ObjectId("5275fa3887437c6100235980") }

    如上内容,最后一行没有email列,

    如果分别加普通索引,和稀疏索引,

    对于最后一行的email分别当成null 和 忽略最后一行来处理.

    根据{email:null}来查询,前者能查到,而稀疏索引查不到最后一行.

    创建哈希索引(2.4新增的)

    哈希索引速度比普通索引快,但是,无法对范围查询进行优化.

    适宜于---随机性强的散列

    db.collection.ensureIndex({file:’hashed’});

    重建索引

    一个表经过很多次修改后,导致表的文件产生空洞,索引文件也如此.

    可以通过索引的重建,减少索引文件碎片,并提高索引的效率.

    类似mysql中的optimize table

    db.collection.reIndex()

  • 相关阅读:
    完成一个Laravel项目的过程
    composer的安装以及具体使用
    mongoDB命令
    test
    豆瓣自动注册、回贴脚本 powered by Python & Selenium
    memcache和redis的对比
    高并发下缓存和数据库一致性问题(更新淘汰缓存不得不注意的细节)
    使用PHP连接、操纵Memcached的原理和教程
    php面向对象 ::、->、self、$this几种操作符的区别介绍
    nginx url 重写
  • 原文地址:https://www.cnblogs.com/yxlblogs/p/4930308.html
Copyright © 2020-2023  润新知