索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),可以讓我們查詢數(shù)據(jù)庫變得 更快。MongoDB 的索引幾乎與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫一模一樣,這其中也包括一些基本的查詢優(yōu)化技巧。 增加檢索的效率. mongodb提供了索引的支持.(越來越傾向于關(guān)系型數(shù)據(jù)庫) 通常建立索引的, 基本要求, 就是文檔的結(jié)構(gòu)要盡可能一致. 普通單列索引語法:
測試代碼:
第一:先檢驗(yàn)一下查詢性能
第二:為name創(chuàng)建索引
第三:再執(zhí)行第一部分的查詢代碼可以看出有數(shù)量級的性能提升 多列索引(復(fù)合索引)語法:
對name和age建立復(fù)合索引 可以使用 該索引被創(chuàng)建后,基于 username 和 age 的查詢將會用到該索引,或者是基于 username 的查詢也會用到該索引,但是只是基于 age 的查詢將不會用到該復(fù)合索引。因此可以說, 如果想用到復(fù)合索引,必須在查詢條件中包含復(fù)合索引中的前 N 個索引列。 子文檔索引語法:
示例: 有如下結(jié)構(gòu)的文檔
要查詢weight等于100的文檔
根據(jù)當(dāng)前示例,我們建立子文檔
唯一索引當(dāng)給某個列添加了唯一索引后,那么這一列的數(shù)據(jù)就必須是唯一的,如果添加重復(fù)數(shù)據(jù)就回到值報錯 語法:
查看索引常用命令: (1)查看當(dāng)前索引狀態(tài):
(2)詳情查看本次查詢使用哪個索引和查詢數(shù)據(jù)的狀態(tài)信息。
有索引時,查詢時間 刪除索引時查詢時間 刪除索引刪除單個索引 語法:
刪除所有索引 語法:
注意:在刪除所有的索引是,逐漸索引會保留。 重建索引一個表經(jīng)過多次修改后,導(dǎo)致表的文件產(chǎn)生空洞,所以文件也是如此??梢酝ㄟ^索引的重建,減少索引文件鎖片,并提高索引的效率。 類似MySQL的optimize table 表名 語法:
索引使用注意事項(xiàng)(1)創(chuàng)建索引的時候,注意1是正序創(chuàng)建索引 -1是倒序創(chuàng)建索引 (2)索引的創(chuàng)建在提高查詢性能的同時會影響插入性能,對于經(jīng)常查詢少插入的文檔可以考慮用索引 (3)復(fù)合索引要注意索引的先后順序。 (4)每個鍵全建立索引不一定就能提高性能,索引不是萬能的。 (5)在做排序工作的時候如果是超大數(shù)據(jù)量也可以考慮加上索引用來提高排序的性能。 |
|