組合索引就是乙個索引結構裡面包括乙個集合文件的多個字段,如,該類索引的建立的主要目的就是提公升資料庫的查詢速度。
建立組合索引的語法格式如下:db.collection.createindex()按照格式即可建立組合索引。
後台進行索引建立:因為索引建立對於mongo來說開銷是非常大的,當資料庫量大時尤為明顯,索引在索引建立過程中多提倡後台建立,語法如下:db.collection.createindex(,)
指定索引名稱:索引建立預設的名稱為key_num(key為欄位名,num為1或-1)通過_進行連線,如的預設索引名稱為:age_1_in_school_time_-1,當建立的索引量大時,就顯得太亂了。具體建立語法-------db.collection.createindex(,)
例:有如下格式的文件:按上面的合適建立入校時間in_school_time倒序,年齡正序的組合索引-----db.collection.createindex()
索引的參考字段要麼是公升序的要麼是降序的排序順序。對於單字段索引,欄位的排序順序是無關緊要的,因為mongodb可以在兩個方向上來回切換。然後對於組合索引,排序順序決定了索引支援的排序操作。
上面這句話我們可以理解成,排序索引,mongo可以在兩個方向上來回切換,要麼同為索引建立時的,要麼就切換成其對立面,對於上面提及的組合索引,排序順序決定了索引支援的排序操作可以看下面的例子,詳細說就是:我現在要做的排序規則是年齡倒序,入校時間正序,而你建立乙個如下的索引-----,就算mongo做方向上的切換也只能是,同樣不能支援我的查詢語句。
注:mongo做索引方向上的切換只能同時進行,不能此時a進行正序,b進行倒序。只能說是共進退
假如有如下文件,現在對該文件進行sort排序操作:
db.collection.find().sort(), 年齡正序,入校時間倒序
db.collection.find().sort(),年齡倒序,入校時間正序
針對上面的查詢語句我們可以通過建立如下索引輕鬆搞定:db.collection.createindex()或db.collection.createindex(),但是如果針對下面的查詢上面的索引還有效嗎?
db.collection.find().sort()
db.collection.find().sort()
通過查詢時間比較發現,作如上排序時db.collection.createindex()建立的索引不在起效,原因就在於對於組合索引,排序順序決定了索引支援的排序操作。想要提公升查詢速度可以通過建立如下索引:db.collection.createindex()或db.collection.createindex()
索引字首是指索引欄位最前面的子集,例如下面的組合索引-----,它的索引字首有:。
值得注意的是mongodb對索引字首的查詢也是可以利用相關的組合索引進行查詢,針對上面的組合索引我們在進行如下字段:(age),(age,in_school_time),(age,in_school_time,name)的查詢時就能利用上面的組合索引。
說到這裡就要說乙個索引建立浪費的現象:針對上面的例子,假如我們同時建立了,兩個索引,那麼後者就顯得很多餘,因為在進行age欄位查詢的時候完全就可以通過組合索引進行查詢。
mongo每張表最大支援64個索引,索引不科學的創立索引完全是不可取的。
例如有如下索引,名字為index,我們在進行相關查詢時就可以通過指定索引進行查詢。
db.collection.find().hint()或者db.collection.find().hint(『index』),以此提公升查詢速度。
當然也可以不使用索引進行全表掃瞄,db.collection.find().hint(),當然如果資料量大得情況下這樣會造成資料庫阻塞很長時間,並且這段時間內你什麼都做不了。
mysql的組合索引 mysql 組合索引
mysql單列索引是我們使用mysql資料庫中經常會見到的,mysql單列索引和組合索引的區別可能有很多人還不是十分的了解,下面就為您分析兩者的主要區別,供您參考學習。為了形象地對比兩者,再建乙個表 create table myindex i testid int not null auto in...
mongoDB 索引使用
一 索引基礎 mongodb的索引幾乎與傳統的關係型資料庫一模一樣,這其中也包括一些基本的優化技巧。下面是建立索引的命令 db.test.ensureindex 可以通過下面的名稱檢視索引是否已經成功建立 db.test.getindexes 刪除索引的命令是 db.test.dropindex 在...
MongoDB學習 索引
一 索引基礎 mongodb的索引幾乎與傳統的關係型資料庫一模一樣,這其中也包括一些基本的優化技巧。下面是建立索引的命令 db.test.ensureindex 可以通過下面的名稱檢視索引是否已經成功建立 db.test.getindexes 刪除索引的命令是 db.test.dropindex 在...