mongo聯合索引和單獨索引的查詢效率比較
做了個小實驗,比較了一下mongo聯合索引和單獨索引的查詢效率。
新建兩張一模一樣mongo表clA和clB,插入相同的資料:
說明:
1、tagId的變化範圍從91000到91449,readTime是從“2017-07-06”到“2018-03-08”,day是readTime的日期簡化(增加此欄位是為了給時間加一個索引,加快指定時間範圍的查詢)
2、clA新增一個聯合索引:{tagId:1, day:1}
3、clB新增兩個單獨索引:{tagId:1}和{day:1}
4、為每個表插入相同的資料2337000條
使用explain()函式進行分析,可明顯看出使用聯合索引效率更高:
當然以上結論是針對上述特定業務需求及資料特點得出的結論,實際專案中還是要根據查詢需求和資料特點使用更合適的索引。過多的索引會給資料庫增加更多的負擔,本專案中為了給表(前8個月2.2億條資料,後期資料量會更大)建合適的索引,做了一個小規模測試。
相關推薦
mongo聯合索引和單獨索引的查詢效率比較
做了個小實驗,比較了一下mongo聯合索引和單獨索引的查詢效率。新建兩張一模一樣mongo表clA和clB,插入相同的資料:說明:1、tagId的變化範圍從91000到91449,readTime是從“2017-07-06”到“2018-03-08”,day是readTime
python list 和dict的查詢效率比較
首先給一個簡單的例子,測測list和dict查詢的時間: import time query_lst = [-60000,-6000,-600,-60,-6,0,6,60,600,6000,60000] lst = [] dic = {} for i in range(100000
聯合索引和單個索引的區別:
聯合索引和單個索引的區別: 如果我們建立了(area, age,salary)的複合索引,那麼其實相當於建立了: (area,age,salary),(area,age)、(area)三個索引,這被稱為最佳左字首 特性。因此我們在建立複合索引時應該將最常用作限制條件的列放在最左邊,依次遞減。
sql加索引和刪除索引,提高效率等
資料庫:mssql2008 測試資料量:150萬條 新增索引:CREATE INDEX 索引名稱 ON 表名(列) WITH(ONLINE=ON) 刪除索引:drop index 索引名稱 on 表名 查尋索引: select * from sys.ind
MySQL單列索引和組合索引的選擇效率與explain分析
一、先闡述下單列索引和組合索引的概念: 單列索引:即一個索引只包含單個列,一個表可以有多個單列索引,但這不是組合索引。 組合索引:即一個索包含多個列。 如果我們的查詢where條件只有一個,我們完全可以用單列索引,這樣的查詢速度較快,索引也比較瘦身。如果我們的業務
資料庫查詢索引(單個索引和複合索引)
當一條sql語句的查詢涉及到多個欄位,這個時候給每個欄位加索引,資料庫也只能夠使用其中的一個索引,這個時候使用複合索引就比較好了。這是為什麼呢? 這是因為:全表掃描/只使用一個索引的速度比起來,去分析兩個索引二叉樹更加耗費時間,所以絕大多數情況下資料庫都是是用
MySQL的聯合索引和覆蓋索引
關於MySQL的聯合索引,覆蓋索引一直濛濛噠,所以寫點東西來熟悉一下 首先建立一個表orders,結構如下: create table orders( order_id int unsigned auto_increment, order_stat
聯合索引和單個索引使用註意事項
平均值 同時 組合 但是 補充 索引使用 選擇 sql 常常 聯合索引: 通俗理解: 利用索引中的附加列,您可以縮小搜索的範圍,但使用一個具有兩列的索引 不同於使用兩個單獨的索引。復合索引的結構與電話簿類似,人名由姓和名構成,電話簿首先按姓氏對進行排序,然後按名字對有相同姓
MySQL單列索引和組合索引(聯合索引)的區別詳解 – 小松部落格
MySQL單列索引和組合索引(聯合索引)的區別詳解 初始我寫這篇文章的原因在於面試到一家大的遊戲公司的時候,一個面試題 大致的內容是怎麼加速這個where a=’1′ 和 where a=’1′ and b=’2′,當時我答題的時候回答的是a加索引,a和b加聯合索引。 面試官跟我聊題目的時候說 where
B-Tree 索引和 Hash 索引的對照
blank tree 內存 算法 data 影響 類型 特點 column 對於 B-tree 和 hash 數據結構的理解可以有助於預測不同存儲引擎下使用不同索引的查詢性能的差異。尤其是那些同意你選擇 B-tree 或者 hash 索引的內存存儲引擎。B-Tree 索
非聚集索引和聚集索引
每次 方式 possible .com 表數據 alt ons row span 一.非聚集索引(MyISAM的索引方式): 使用B+Tree作為索引結構,葉節點的data域存放的是數據記錄的地址.主鍵索引圖: 輔助索引圖: 主鍵索引和輔助索引沒有本質上的區別,da
MySQL的btree索引和hash索引的區別
class 操作 麻煩 關系 進行 特殊性 檢索 www. 創建 MySQL的btree索引和hash索引的區別 ash 索引結構的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像B-Tree 索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次的IO
JS 中數組字符串索引和數值索引研究
組成 ava RF 分享 style spa 這樣的 使用字符串 alt 先來看一個問題: var array = []; array["a"] = "hello"; array["b"] = "world"; array["c"] = "yes"; console.
索引有B+索引和hash索引,各自的區別
單獨 效率 結構 edi 性能 mil b+樹 ash 避免 Hash索引結構的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像B+樹索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次的IO訪問,那為什麽大家不都用Hash索引而還要使用B+樹索引呢? 1. Has
普通索引和唯一索引的區別、性能差異,以及其他索引簡介
整數 排列 唯一索引 同名 關聯 超過 結果 其它 加載 唯一索引和普通索引使用的結構都是B-tree,執行時間復雜度都是O(log n)。 1、普通索引 普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對數據的訪問速度。因此,應該只為那些最經常出現在查
(ainusers原創)Hash索引和BTree索引
注: Innodb和myisam預設的索引是Btree索引 Hash索引(類比於拼音查詢漢字) BTree(類比於偏旁查詢漢字) 區別(瞭解Innodb和myisam主要還應該從區別開始) 1.主要區別在於:Hash不能用於範圍查詢 2.檢索效率遠高於BTree
ORACLE 全域性索引和本地索引
Oracle資料庫中,有兩種型別的分割槽索引,全域性索引和本地索引,其中本地索引又可以分為本地字首索引和本地非字首索引。下面就分別看看每種型別的索引各自的特點。 全域性索引以整個表的資料為物件建立索引,索引分割槽中的索引條目既可能是基於相同的鍵值但是來自不同的分割槽,也可能是多
BTREE索引和HASH索引,聚集索引和非聚集索引
https://www.jianshu.com/p/76530afa13cb https://blog.csdn.net/yifanSJ/article/details/79220044 BTREE索引和HASH索引 1、不同引擎的預設索引 不同的引擎對於索引有不同的支援:Innod
唯一索引和普通索引的區別
一、背景介紹 索引用來快速地尋找那些具有特定值的記錄,如果沒有索引,執行查詢時Mysql必須從第一個記錄開始掃描整個表的所有記錄,直至找到符合要求的記錄,表裡面的記錄數量越多,這個操作的代價就越高,如果作為搜尋條件的列上已經建立了索引,mysql無需掃描任何記錄即可迅速得到目標記錄所在的位置。如
普通索引和唯一索引的區別
轉自:https://blog.csdn.net/u014071328/article/details/78780683 唯一索引和普通索引使用的結構都是B-tree,執行時間複雜度都是O(log n)。 1、普通索引 普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快