「索引」是幾乎所有資料庫都有的概念。
資料庫的「索引」,可以看作是書籍的「目錄」!
db.
.ensure()/
/在username上建立索引
沒有索引時,如果我們要在整個集合中查詢符合條件的文件,就只能乙個文件乙個文件地去掃瞄(即「全表掃瞄」)。當集合非常大時,這總全表掃瞄的方式就會變得十分低效。
而有了索引之後,我們就不需要再使用全表掃瞄這種低效的方式來查詢文件!而是如同翻書先查目錄一樣,先查索引再根據索引去查詢文件!
關於索引需要注意的是:
合理地使用索引可以大大增加我們查詢資料庫的效率,但是使用索引是有代價的。對於索引,每次執行「寫」操作時,都需要更新索引,這會耗費一定的效能。
每個集合上的索引不應該超過兩個!對於需要做頻繁「寫」操作的集合要謹慎使用索引!
適合場景:
主要時讀取操作,寫操作較少。
集合較大、文件較大。集合較大、文件較大時,正確使用索引可以大幅度提公升查詢效率。
選擇性查詢。
索引基數較大。在索引基數(集合中某個字段擁有不同值的數量)較大得字段上建立索引,可以大幅提公升效率。
最簡單索引:最簡單的索引,就是在某乙個欄位上建立索引。
復合索引:在多個欄位上建立的索引。
索引物件、索引陣列:在文件中的乙個陣列元素或者乙個物件屬性上建立的索引。
唯一索引:可以確保每個文件的指定鍵都有唯一值的索引。
稀疏索引:只對包含相應鍵起作用的唯一索引。稀疏索引不會認為兩個指定鍵都為null的文件重複。
其他簡單索引:如復合唯一索引、覆蓋索引。
特殊索引:固定集合、ttl索引、全文本索引等,我會單獨寫一篇博文介紹。
索引簡單介紹
今天面試時被問到索引的原理,之前在學習資料庫的時候,研究了一下,但是不經常使用,或者說使用建立索引的時候也就是幾句命令,所以對原理性的東西並沒有掌握。因此用一篇簡短的文章來簡單回顧一下索引的基本知識,等抽空研究原理。首先說說什麼是索引,類似與書的目錄。概念 1.索引是對資料庫表中一列或多列的值進行排...
mongodb中的索引二
通常mongodb中的索引的建立方式如下 這種方式下,已經排好順序了,所以只要在排好序的key中找滿足查詢條件的記錄即可,需要掃瞄的資料量比較大,還有一種索引的建立方式 這種建立的方式中,不需要掃瞄很多的記錄,在索引中查詢滿足條件的記錄,但是需要在記憶體中排序,如果滿足記錄的條件很多,就要消耗很多的...
mysql索引簡單介紹
索引從本質上來說也是一種表,這樣的表儲存被列為索引的列項值和指向真正完整記錄的指標。索引對使用者透明。僅僅被資料庫引擎用來加速檢索真實記錄。有索引的表。insert和update操作會耗費很多其它時間而select則會變快。由於insert和update操作同一時候也要insert和update索引...