mongoDB數(shù)據(jù)庫索引快速入門指南
MongoDB 索引
索引通常能夠極大的提高查詢的效率,如果沒有索引,MongoDB在讀取數(shù)據(jù)時必須掃描集合中的每個文件并選取那些符合查詢條件的記錄。
這種掃描全集合的查詢效率是非常低的,特別在處理大量的數(shù)據(jù)時,查詢可以要花費幾十秒甚至幾分鐘,這對網(wǎng)站的性能是非常致命的。
索引是特殊的數(shù)據(jù)結(jié)構(gòu),索引存儲在一個易于遍歷讀取的數(shù)據(jù)集合中,索引是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu)。
mongo可以通過創(chuàng)建索引來提高查詢的速度。
1. 開始與準備數(shù)據(jù)
啟動mongo并選擇目標數(shù)據(jù)庫
mongo
use test
然后準備一組數(shù)據(jù)(10萬條數(shù)據(jù),較大的數(shù)據(jù)量)
for(i=0;i<100000;i++){db.test.insert({name:'test'+i,age:i})}
2. 創(chuàng)建索引前
查詢一下name為"test90000"的數(shù)據(jù)。并使用explain方法來查看查詢的性能。
db.test1.find({name:"test90000"}).explain('executionStats')
這里可以看到查詢花了53毫秒
3. 創(chuàng)建索引 createIndex
給字段name創(chuàng)建索引
db.test1.createIndex({name: 1})
查看索引:
給name創(chuàng)建索引之前,_id字段默認為索引,創(chuàng)建后集合有兩個索引,"_id"和"name"。
4. 創(chuàng)建索引后
再次查找該條數(shù)據(jù),并查看查詢的性能,發(fā)現(xiàn)所用時間接近0毫秒。即設定索引后查詢性能大大提升了。
db.test1.find({name:"test90000"}).explain('executionStats')
5. 刪除索引
db.test1.dropIndex({name:1})
查看之
db.test1.getIndexes()
如圖,只剩下了"_id"一個索引。"name"索引已被刪除。
6.唯一索引與符合索引
①唯一索引
db.test1.createIndex({name: 1},{"unique":true})
查看索引
db.test1.getIndexes()
可以看到,unique為true。
設定為唯一索引后,該索引的值不能重復。
(這個特點也可以用于寫爬蟲時不想要某字段的重復數(shù)據(jù)時,達到去重的目的。)
如圖插入一條name重復的數(shù)據(jù)時,會產(chǎn)生如下報錯:
即插入失敗了。
②復合索引
創(chuàng)建多個索引的方式被稱為復合索引。
首先刪掉剛剛創(chuàng)建的索引name
db.test1.dropIndex({name:1})
然后一次創(chuàng)建name,age兩個索引
db.test1.createIndex({'name':1,'age':1})
處理海量數(shù)據(jù)時,在一定的規(guī)則下使用復合索引,可以大幅提升查詢的性能.
到此這篇關于mongoDB數(shù)據(jù)庫索引快速入門指南的文章就介紹到這了,更多相關mongoDB索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MongoDB快速入門筆記(六)之MongoDB的文檔修改操作
這篇文章主要介紹了MongoDB快速入門筆記(六)之MongoDB的文檔修改操作的相關資料,需要的朋友可以參考下2016-06-06MongoDB Shell 命令實例總結(jié)【進階篇】
這篇文章主要介紹了MongoDB Shell 命令,結(jié)合實例形式總結(jié)分析了MongoDB數(shù)據(jù)庫常用的查詢、更新、插入、集合、函數(shù)等相關操作技巧與注意事項,需要的朋友可以參考下2019-02-02mongodb實現(xiàn)數(shù)組對象求和方法實例
這篇文章主要給大家介紹了關于mongodb實現(xiàn)數(shù)組對象求和的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-01-01MongoDB模糊查詢正則regex(類似like?和?not?like)
在類關系型數(shù)據(jù)庫中,like和not?like是常用的模糊查詢操作符,它允許我們在匹配字段的時候使用通配符,在MongoDB中,也有類似的操作符,MongoDB?可以使用?$regex?操作符來設置匹配字符串的正則表達式,MongoDB?使用?PCRE(Perl?兼容的正則表達式)作為正則表達式語言2024-02-02mongodb 命令行下及php中insert數(shù)據(jù)詳解
這篇文章主要介紹了mongodb 命令行下及php中insert數(shù)據(jù)詳解,需要的朋友可以參考下2014-07-07MongoDB開源數(shù)據(jù)庫開發(fā)工具dbKoda
這篇文章主要介紹了MongoDB開源數(shù)據(jù)庫開發(fā)工具dbKoda的相關資料,需要的朋友可以參考下2017-09-09