巨杉資料庫執行計畫和索引的使用

2021-12-30 13:09:55 字數 1248 閱讀 9238

執行計畫:巨杉資料庫的執行計畫通過explain獲取,分成兩種,一種是未執行獲取的執行計畫,一種是已執行後獲取的執行計畫。兩種方式獲取的執行計畫詳情有所不同。

索引:在巨杉早期的版本中,先建立的索引會被優先使用,這是不合理的,後面的版本不知道有沒有進行優化。可以通過hint進行指定使用哪個索引。

--執行計畫

> db.scott.person.find().explain()

> db.scott.person.find().explain()

> db.scott.person.find().explain()

--索引

> db.scott.person.createindex("idx_person_age",,true) --唯一索引

> db.scott.person.createindex("idx_person_age",,false) --普通索引

> db.scott.person.createindex("idx_person_age",,false) --反向索引

> db.scott.person.listindexes() --檢視索引

--指定索引hint和use_index

//nosql寫法:

> db.scott.person.find().hint().explain() --強制走索引

> db.scott.person.find().hint().explain() --強制走全表

//sql寫法:

> db.exec("select * from scott.t_test where yxbz='未停用' and myl>=90 /*+use_index(idx_test_yxbz)*/")

> db.exec("select * from scott.t_test where yxbz='未停用' and myl>=90 /*+use_index(idx_test_myl)*/")

> db.exec("select * from scott.t_test where yxbz='未停用' and myl>=90 /*+use_index(null)*/") --不使用索引

> db.exec("select t1.a, t2.b from foo.bar1 as t1 inner join foo.bar2 as t2 on t1.a = t2.b /*+use_index(t1, idx_bar1_a) use_index(t2, idx_bar2_b) use_hash()*/")

SequoiaDB巨杉資料庫 訪問計畫

在資料庫系統中,乙個操作命令 如 sql 語句 的處理通常包含以下兩大步驟 查詢優化是影響命令執行效率的乙個關鍵因素,它決定了資料的具體訪問路徑,和是否使用索引以及使用哪個索引。比較常見的兩種優化器型別是 rbo rule based optimization,基於規則的優化器 與 cbo cost...

SequoiaDB 巨杉資料庫 全文索引

全文索引用於在大量文字中進行快速的檢索。在使用普通索引時,搜尋特定的關鍵字需要使用正規表示式。當文字是整本書或是整篇文章時,正規表示式的效率較低。而全文索引會建立乙個詞庫,統計每個詞條出現的頻率和位置。在搜尋某詞時,就可以快速定位到該詞出現的位置,提公升檢索效率。sequoiadb 全文檢索能夠實現...

SequoiaDB巨杉資料庫 索引的統計資訊

欄位名資料型別 預設值必須 說明collectionspace string 是統計收集的集合空間名 collection string 是統計收集的集合名 createtime numberlong0是 統計收集的時間戳 index string 是統計收集的索引名 indexlevels num...