1. 程式人生 > >mongodb系列(二)使用複合索引中要注意欄位的前後

mongodb系列(二)使用複合索引中要注意欄位的前後

背景

預先建立了一個複合索引,分別以 updated_at 和 size 兩個欄位作為索引依據,其中該collection有94萬+個document

db.cms_resources.createIndex({updated_at:-1,size:-1},{name:'index_updated_size_desc'});

實驗

開始查詢並輸出狀態資訊:

db.cms_resources.find({updated_at:{$lt:1531732138}}).explain(true);

查詢策略使用 IXSCAN 這個沒毛病

但這次查詢按照size欄位條件

db.cms_resources.find({size:{$gt:1}}).explain(true);

查詢的策略卻為COLLSCAN全表查詢:

從上面看,好像跟查詢的欄位順序是有關係的,驗證一下,這次把兩個條件updated_at和size都查詢,但位置跟複合索引欄位位置換一下:

db.cms_resources.find({size:{$lt:1},updated_at:{$gt:1}}).explain(true);

返回狀態資訊,還是使用了索引策略

結論

1. 建立複合索引,索引中兩欄位前後順序與查詢條件欄位在數量一致的情況下,順序不影響使用索引查詢。

2.當複合索引中的欄位數量與查詢條件欄位數量不一致情況下,以複合索引欄位前置優先規則。

相關推薦

mongodb系列使用複合索引注意前後

背景 預先建立了一個複合索引,分別以 updated_at 和 size 兩個欄位作為索引依據,其中該collection有94萬+個document db.cms_resources.createIndex({updated_at:-1,size:-1},{name:'

排序索引、桶排序、示圖、敗者樹等圖文詳解--敗者樹

排序(二) 以上排序演算法都有一個性質:在排序的最終結果中,各元素的次序依賴於它們之間的比較。我們把這類排序演算法稱為比較排序。 任何比較排序的時間複雜度的下界是nlgn。 以下排序演算法是用運算而不是比較來確定排序順序的。因此下界nlgn對它們是不適用的。

ELK系列:.net core使用ELK

正常 etc () 完成後 class -c tro 訪問 ret ELK安裝好後,我們現在.net Core中使用一下,大體思路就是結合NLog日誌組件將數據寫入ELK中,其它語言同理。 ELK的安裝還是有些復雜的,我們也可以在Docker中安裝ELK:docker ru

迴圈神經網路系列Tensorflowdynamic_rnn

1.回顧 上一篇博文(迴圈神經網路系列(一)Tensorflow中BasicRNNCell)中我們介紹了在Tensoflow中,每個RNN單元的實現,以及對應各個引數的含義。自那之後,我們就能通過Tensorflow實現一個單元的計算了。 import tensorflow as

MongoDB入門系列:Insert、Update、Delete、Drop

概述   本章節介紹Insert、Update、Delete、Drop操作基本語法。 環境: Version:3.4 insert insert()基本語法如下: db.collection.insert( <document or array of documents&

Lucene7.2.1系列luke使用及索引文件的基本操作

系列文章: luke入門 簡介: 下載地址:https://github.com/DmitryKey/luke/releases Luke是一個用於Lucene/Solr/Elasticsearch 搜尋引擎的,方便開發和診斷

MongoDB學習系列mongo聚合查詢例項

mongoDB聚合查詢Java程式碼,小例項。 private void init(String year) throws Exception {         if (year == null) {             year = new SimpleDateFo

計算機視覺領域稍微容易的期刊系列

1979年創刊,系被JCR收錄的核心期刊,在該學科94種核心期刊中,排名第1位。發表模式識別、影象處理和人工智慧研究及其應用方面的原始性論文。有網友說,投過一篇,3個月給初審結果,要求較高,無論從理論本身還是實驗效果都要強於最新技術,也就是你提出來的演算法要是top one,其中一個審稿人說創新還可以但不足

MySQL優化系列--查詢優化1索引設計

接下來這篇是查詢優化,使用者80%的操作基本都在查詢,我們有什麼理由不去優化他呢??所以這篇部落格將會講解大量的查詢優化(索引以及庫表結構優化等高階用法後面文章再講),先講單表查優化,再講多表查優化。

MySQL優化系列--索引的使用、原理和設計優化

一、索引的概述和使用: (1)概述: 1)什麼是索引? 索引是一種特殊的檔案(InnoDB資料表上的索引是表空間的一個組成部分),它們包含著對資料表裡所有記錄的引用指標。更通俗的說,資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。在沒有索引的情況下,資料庫會遍歷全部

“造輪運動”之 ORM框架系列~ 說說我心目的ORM框架

ORM概念解析    首先梳理一下ORM的概念,ORM的全拼是Object Relation Mapping (物件關係對映),其中Object就是面嚮物件語言中的物件,本文使用的是c#語言,所以就是.net物件;Relation Mapping則是關係對映,在資料庫的系統中指的就是.net物件與資

Azure Storage 系列 .NET Core Web 專案操作 Blob 儲存

一,引言   上一篇文章,我們介紹到在實際專案中系統會產生大量的日誌檔案,使用者上傳的頭像等等,同時也介紹到可以使用Azure Blob Storage 來儲存專案中的一些日誌檔案,使用者頭像,使用者視訊等等。這個時候,有人就會問到,那我大概明白Blob可以存放什麼型別的資料了,這個時候就有人問一些問題了  

python系列centos6.x部署多個python版本

python pyenv centos6.x virtualenv 博主QQ:819594300博客地址:http://zpf666.blog.51cto.com/有什麽疑問的朋友可以聯系博主,博主會幫你們解答,謝謝支持!使用pyenv+virtualenv方式部署python多版本pyenv

雪飲者 決策樹系列決策樹應用

ssi 字符串長度 mes pla 選擇 font com vector nac   本篇以信息增益最大作為最優化策略來詳細介紹決策樹的決策流程。   首先給定數據集,見下圖    註:本數據來源於網絡 本篇將以這些數據作為訓練數據(雖然少,但足以介紹清楚原理!),下圖是決

數據結構系列算法

nal log 如何 空間復雜度 計算 youdao 最好 時間 bsp 高斯求和 計算1+2+...+100 算法的概念就不多說了 強調一點就是,沒有通用的算法,就像永遠沒有銀彈,所有的算法都有自己的適用領域 評判算法好壞的方法 復雜度用大O表示,又分為時間復雜度

【原創】源碼角度分析Android的消息機制系列——ThreadLocal的工作過程

機制 simple hand 這就是 數據存儲 read etc lena 並且 ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 在上一篇文章中,我們已經提到了ThreadLocal,它並非線程,而是在線程中存儲數據用的。數據存儲以後,只能在指定的線程中獲取到數據

MySQL系列

sql read 註意 出現 back 總結 lba 區別 不同 MySql 事務 目錄 MySQL系列(一):基礎知識大總結 MySQL系列(二):MySQL事務 MySQL系列(三):索引 什麽是事務(transaction) 保證成批操作要麽完全執行,要麽完全不

Linux系統運維常見面試簡答題系列14題

local 企業 nginx服務 簡答題 ip協議 php out gin 報錯 1. /var/log/messages日誌出現kernel:nf_conntrack:tablefull,dropping packet,請問是什麽原因導致的,如何解決? 此報錯為iptab

MongoDB學習

運行 基礎 中心 功能 查詢 訪問 用戶數據 沒有 主機 歷史: MongoDB是面向文檔的數據庫。它提供面向文檔的存儲。 mongodb中沒有關系的概念 功能特性: 1、支持特別查詢 支持正則表達式搜索 2、可以索引文檔中的任何字段 3、支持主從復制 主機支持讀寫

觀察者模式(Observer Pattern):HeadFirst的氣象站的實現

att dex mov min first return 狀態 size sdi 1 觀察者模式的原理,首先由一個主題,當主題發送變化的時候,通知該主題的訂閱者 按照上面的分析我們來進行設計 1.抽象主題Subject public interface Subject {