覆蓋索引查詢

2021-08-28 22:51:04 字數 695 閱讀 2527

在每乙個 mongodb 官方文件中,覆蓋查詢都具有以下兩個特點:

既然查詢中的所有欄位都屬於乙個索引,mongodb 就會利用同一索引,匹配查詢集合並返回結果,而不需要實際地檢視文件。因為索引存在於 ram 中,從索引中獲取資料要比通過掃瞄文件獲取資料快得多。

為了測試覆蓋查詢,假設在乙個users集合中包含下列文件:

下面我們將為users集合中的genderuser_name字段建立乙個符合索引。使用下列查詢:

>db.users.ensureindex()

這一索引將覆蓋下列查詢:

>db.users.find(,)

也就是說,對於上面的查詢,mongodb 不會去檢視文件,轉而從索引資料中獲取所需的資料,這顯然要快得多。

既然索引不包含_id字段,那麼當查詢中預設返回 _id 時,我們可以在 mongodb 的查詢結果集中將其排除掉。

下面的查詢就不會被覆蓋。

>db.users.find(,)

最後,需要記住的是,如果出現下列情況,索引不能覆蓋查詢:

mysql 覆蓋索引 簡書 覆蓋索引

覆蓋索引 1 當發起乙個被索引覆蓋的查詢時,在explain的extra列可以看到using index的資訊,此時就使用了覆蓋索引 mysql explain select store id,film id from inventory g 1.row id 1 select type table...

MySQL覆蓋索引呼叫 MySQL 覆蓋索引

什麼是覆蓋索引 建立乙個索引,該索引包含查詢中用到的所有字段,稱為 覆蓋索引 使用覆蓋索引,mysql 只需要通過索引就可以查詢和返回查詢所需要的資料,而不必在使用索引處理資料之後再進行回表操作。覆蓋索引可以一次性完成查詢工作,有效減少io,提高查詢效率。使用示例 查詢語句 select col2,...

MySQL 使用索引覆蓋優化業務查詢

一 在mysql表中,有一項無法忽略的部分,那就是索引 因為它直接或間接的決定了業務查詢的時間複雜度。乙個差的索引,會導致sql操作需要掃瞄全表,來查出符合條件的資料行,這當然是乙個悲劇。我們有必要,但也很容易去避免以下這種情況的發生,只要針對業務查詢建對應的索引就可以了。但是,只需要建出對應的索引...