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