在不清楚資料表欄位資料分佈的情況下,應該建立什麼型別的索引?
在討論之前,先看看關係型資料庫常見的索引型別:
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java查詢資料庫,int型欄位為null的情況Java資料庫Null
- oracle分表效率,資料庫分庫分表是什麼,什麼情況下需要用分庫分表Oracle資料庫
- Mysql兩種情況下更新欄位中部分資料的方法MySql
- Java資料型別與資料庫欄位型別對應關係Java資料型別資料庫
- 企業在什麼情況下引入分散式資料庫?分散式資料庫
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- 查詢mysql某張表中的所有資料(欄位)型別MySql型別
- 用Elasticsearch做大規模資料的多欄位、多型別索引檢索Elasticsearch多型型別索引
- ABAP 動態備份自建表資料到新表(自建表有資料的情況下要改欄位長度或者其他)
- 資料庫中欄位資料型別以及約束資料庫資料型別
- 資料型別是什麼?Python的資料型別又有哪些?資料型別Python
- 在 mysql 下 建立新的資料庫和對應的表MySql資料庫
- 為什麼資料庫表的int型別欄位對映到實體類中要使用Integer型別,而不是int型別?...資料庫型別
- 什麼情況下需要搭建大資料平臺大資料
- -206 錯誤. 在表中找不到對應的資料欄位txt
- 什麼情況下需要建立索引? 索引的作用?為什麼能夠提高查詢速度?(索引的原理) 索引有什麼副作用嗎?索引
- 如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容型別資料庫
- 想問下,onethink建立模型的時候建立價格欄位需要2位小數用什麼型別模型型別
- 什麼是組合資料型別?Python組合資料型別分為幾類?資料型別Python
- Java 資料型別和 MySql 資料型別對應一覽表JavaMySQL 資料型別
- 資料庫中的圖片欄位怎麼在報表中呈現資料庫
- 2021年Q3全球DDOS攻擊分佈情況(附原資料表)
- ORANCLE 資料已存在,修改欄位型別長度型別
- Mysql資料庫建立儲存過程實現往資料表中新增欄位的方法MySql資料庫儲存過程
- 支援 enum 型別的欄位允許為空插入資料庫型別資料庫
- 在大資料情況下MySQL的一種簡單分頁最佳化方法大資料MySql
- MyBatis Java 和 資料庫 資料型別對應表MyBatisJava資料庫資料型別
- 建立一種新的資料型別資料型別
- 表的一個欄位存的關聯表的id陣列的json字元,怎麼能在不使用遍歷的情況下獲取所有的id對應的關聯表的資料呢陣列JSON字元
- 火狐是否在未經授權的情況下蒐集您的資料?
- 2019年釀酒行業企業數量分佈情況(附原資料表) 行業
- mssql sqlserver 可以儲存二進位制資料的欄位型別詳解SQLServer型別
- 談談術語表、資料字典、資料目錄分別是什麼
- 資料庫系列:高併發下的資料欄位變更資料庫
- 在django中怎麼檢視建立的資料表Django
- mysql資料表按照某個欄位分類輸出MySql
- 資料庫儲存時間到底該用什麼型別?資料庫型別
- 為什麼資料庫欄位要使用NOT NULL?資料庫Null
- dnMySQL 資料型別詳情MySQL 資料型別