mongodb建索引的策略
来源:互联网 发布:青岛java培训学校 编辑:程序博客网 时间:2024/04/30 08:51
该如何建立有效索引
现在有这么一个查询条件,数据库里的数据总量是60087条数据:
db.t_f10_company_executives_01.find({symbol:"000002",status:1}).sort({fce1_03:-1})
如果不建立索引的话,需要1.6s左右时间。
后来我建立如下索引:
db.t_f10_company_executives_01.ensureIndex({fce1_03:-1,symbol:1,status:1});
那它走了那个索引呢?执行下面语句
db.t_f10_company_executives_01.find({symbol:"000002",status:1}).sort({fce1_03:-1}).explain()
结果是(执行时间是0.078s):
{ "cursor" : "BtreeCursor fce1_03_-1_symbol_1_status_1", "isMultiKey" : false, "n" : 25, "nscannedObjects" : 25, "nscanned" : 4044, "nscannedObjectsAllPlans" : 4067, "nscannedAllPlans" : 8086, "scanAndOrder" : false, "indexOnly" : false, "nYields" : 10, "nChunkSkips" : 0, "millis" : 22, "indexBounds" : { "fce1_03" : [ [ { "$maxElement" : 1 }, { "$minElement" : 1 } ] ], "symbol" : [ [ "000002", "000002" ] ], "status" : [ [ 1, 1 ] ] }, "server" : "10-10-120-241:27018", "millis" : 22}
我们肯定希望nscanned的值接近n的值才是最理想的。于是把刚刚建立的索引删除:`db.t_f10_company_executives_01.dropIndex("fce1_03_-1_symbol_1_status_1")`我们现在把symbol与fce1_03字段调整下顺序:`db.t_f10_company_executives_01.ensureIndex({fce1_03:-1,symbol:1,status:1});`再次执行,效果是:
db.t_f10_company_executives_01.find({symbol:"000002",status:1}).sort({fce1_03:-1}).explain()
{ "cursor" : "BtreeCursor symbol_1_status_1_fce1_03_-1", "isMultiKey" : false, "n" : 25, "nscannedObjects" : 25, "nscanned" : 25, "nscannedObjectsAllPlans" : 25, "nscannedAllPlans" : 25, "scanAndOrder" : false, "indexOnly" : false, "nYields" : 0, "nChunkSkips" : 0, "millis" : 0, "indexBounds" : { "symbol" : [ [ "000002", "000002" ] ], "status" : [ [ 1, 1 ] ], "fce1_03" : [ [ { "$maxElement" : 1 }, { "$minElement" : 1 } ] ] }, "server" : "10-10-120-241:27018", "millis" : 0}
个人总结:建立索引时,过滤字段放到前面,排序字段建议放到后面。
1 0
- mongodb建索引的策略
- MongoDB:mongodb的索引操作
- MongoDB:mongodb的索引操作
- mongodb的地理位置索引
- mongodb的地理位置索引
- mongoDB的索引
- Mongodb的索引
- mongodb的地理位置索引
- mongoDB的全文索引
- mongoDB的地理位置索引
- mongoDb的索引
- 6、Mongodb的索引
- MongoDB索引的类型
- mongodb的索引
- mongodb 的索引
- MongoDB的索引
- Mongodb 的索引架构
- 有效的MongoDB索引
- LeetCode 409. Longest Palindrome
- linux安装apache2.4.23
- 从零开始用Spring说helloworld--1
- 浅谈UIStoryboardSegue 的一些方法
- 杭电oj编码2023
- mongodb建索引的策略
- nyoj28 大数阶乘
- 使用Task代替ThreadPool和Thread
- 关于Windows 2008 IIS无法使用虚拟目录密码作为用户 administrator 在本地登录到...解决方案
- 树莓派3开发笔记-修改树莓派软件源
- 此文一出,程序员的朋友圈炸锅了
- 软件评测师——计算机网络2
- Android新手入门思维导图
- Python 进阶_OOP 面向对象编程_类和继承