大檔案查詢優化方案之倒排索引

2021-07-22 02:51:55 字數 831 閱讀 4674

1.倒排索引

正排索引與倒排索引

咱們先來看什麼是倒排索引,以及倒排索引與正排索引之間的區別:

接下來,闡述下正排索引與倒排索引的區別:

一般索引(正排索引)

正排表是以文件的id

為關鍵字,表中記錄文件中每個字的位置資訊,查詢時掃瞄表中每個文件中字的資訊直到找出所有包含查詢關鍵字的文件。正排表結構如圖

1所示,這種組織方法在建立索引的時候結構比較簡單,建立比較方便且易於維護

;因為索引是基於文件建立的,若是有新的文件假如,直接為該文件建立乙個新的索引塊,掛接在原來索引檔案的後面。若是有文件刪除,則直接找到該文件號文件對因的索引資訊,將其直接刪除。但是在查詢的時候需對所有的文件進行掃瞄以確保沒有遺漏,這樣就使得檢索時間大大延長,檢索效率低下。 

儘管正排表的工作原理非常的簡單,但是由於其檢索效率太低,除非在特定情況下,否則實用性價值不大。

倒排表以字或詞為關鍵字進行索引,表中關鍵字所對應的記錄表項記錄了出現這個字或詞的所有文件,乙個表項就是乙個字表段,它記錄該文件的id

和字元在該文件中出現的位置情況。由於每個字或詞對應的文件數量在動態變化,所以倒排表的建立和維護都較為複雜,但是在查詢的時候由於可以一次得到查詢關鍵字所對應的所有文件,所以效率高於正排表。在全文檢索中,檢索的快速響應是乙個最為關鍵的效能,而索引建立由於在後台進行,儘管效率相對低一些,但不會影響整個搜尋引擎的效率。

倒排表的結構圖如圖2:

倒排表的索引資訊儲存的是字或詞後繼陣列模型、互關聯後繼陣列模型條在文件內的位置,在同一篇文件內相鄰的字或詞條的前後關係沒有被儲存到索引檔案內。

InfluxDB 倒排索引之Index檔案

本文主要講解influxdb中的倒排索引,influxdb和傳統的lsm tree hbase使用的模型 不一樣的地方是其內部中多了乙個倒排索引,這也是讓influxdb查詢較快的秘訣。在1.7的 版本中,influxdb提供了兩種型別的倒排索引,記憶體和磁碟的,之前只有記憶體版本的,但是隨著資料的...

MySQL查詢優化之索引

mysql查詢優化之索引 什麼是索引 索引簡單來說就類似字典,想想我們小時候在中華字典怎麼查某個字。索引的作用就是快速找出在某個列中有一特定值的行。例如 有一張user表,其中有200萬條記錄,記錄著200萬個人的資訊。有乙個phone的字段記錄每個人的 號碼,現在想要查詢出 號碼為 x的人的資訊。...

Mysql查詢語句優化之索引優化案例

sql優化說到底還是索引的優化,建立索引並使之生效.單錶優化 create table student id int 11 not null auto increment,stuname varchar 60 default null,age int 11 default null,varchar ...