在不清楚資料表欄位資料分佈的情況下,應該建立什麼型別的索引?

husthxd發表於2016-02-19

在討論之前,先看看關係型資料庫常見的索引型別:

1.點陣圖索引,適用於該欄位重複資料很多的情況;

2.B+樹索引,適用於該欄位重複資料不多的情況。

在不清楚資料表欄位資料分佈的情況下,應該建立什麼型別的索引?個人覺得以上兩種都不太適用,可以嘗試使用第3類的索引:

3.倒排索引,在搜尋引擎使用較多,適用於大多數的情況。

使用普通的文字檔案格式儲存倒排索引,格式為:

value:rowid(行標識碼),欄位值對應value,rowid對應該行的標識碼。

要注意的是,在建立倒排索引時,倒排索引的key需要按ascii碼排序。

同時,為了加快搜尋的速度,為倒排索引建立索引的後設資料,包括:

1.倒排索引檔案的最大值和最小值。

2.倒排索引檔案索引。

樣例後設資料如下:

[data]

min:1(該欄位最小值)

max:100(該欄位最大值)

[index]

1:value,offset(索引檔案第1行的欄位值和索引檔案的偏移量)

10000:value,offset(索引檔案第10000行的欄位值和索引檔案的偏移量)

......

n:value,offset(索引檔案第n行的欄位值和索引檔案的偏移量)


在實際查詢時,給出查詢條件,透過讀取索引的後設資料可以很快的定位到該查詢條件對應的倒排索引,再透過倒排索引查詢資料。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-1991374/,如需轉載,請註明出處,否則將追究法律責任。

相關文章