1. 程式人生 > 其它 >MongoDB索引Index應用之explain()方法

MongoDB索引Index應用之explain()方法

  與MySQL(參考MySQL索引原理之索引分析 - 池塘裡洗澡的鴨子 - 部落格園 (cnblogs.com))一樣,MongoDB也提供explain命令對索引進行分析。那如何使用MongoDB中的explain命令呢?下面進行實踐:

  與MySQL中explain實踐(參考MySQL效能優化之SQL語句及索引優化 - 池塘裡洗澡的鴨子 - 部落格園 (cnblogs.com))類似迴圈插⼊100萬條資料(使用JS),不使⽤索引欄位查詢檢視執⾏計劃 ,然後給某個欄位建⽴索引,使⽤索引欄位作為查詢條件再檢視執⾏計劃進⾏分析。

  插入100萬條資料——與MySQL一樣,想著MongoDB是不是也提供儲存過程功能,確實提供了只是利用了JS。本以為可以參考

在mongodb伺服器上儲存和執行 js 函式 - 儲存過程 - 知乎 (zhihu.com)寫儲存過程insert100萬條資料,但是儲存過程的呼叫eval在MongoDB4.2以後版本就完全棄用了——官方的建議是使用事務取而代之,可以看到官網中提供的Database Command已經沒有了evalDatabase Commands — MongoDB Manual,那就採取另外一種方式吧。如下:

      

      

      在MongoDB命令之集合資料操作(CURD) - 池塘裡洗澡的鴨子 - 部落格園 (cnblogs.com)中有一條示例資料。

  下面示範explain的使用:

    

   從上圖可知explain()可以接收不同的引數,通過設定不同引數我們可以檢視更詳細的查詢計劃,分別如下:

  1、queryPlannerqueryPlanner是預設引數,具體執⾏計劃資訊參考下⾯的表格。

      

      

  2、executionStatsexecutionStats會返回執⾏計劃的⼀些統計資訊(有些版本中和allPlansExecution等同)。

      

       

  3、allPlansExecution:allPlansExecution⽤來獲取所有執⾏計劃,結果引數基本與上⽂相同。其是以上兩個引數的拼接。