索引查詢表演算法測試

2021-04-13 02:36:47 字數 1041 閱讀 1230

索引查詢表測試** zb++ 2007-6-9 知識共享 責任自負

索引查詢表cmatchtable2

測試用類ctemp,包含兩個long,均作為關鍵字

100萬資料量(0,0)-(999999,999999)

索引查詢表所需的記憶體:

節點集合數(nodes) 8003930 (每個是乙個vector,大小為3或4個指標的大小,測試機為32位元組)

元素數(cnode) 9003928 (2個int 1個char 2個bool ,一般為12位元組)

而原始資料為16位元組(64位機),索引表的大小大約為原始陣列的23倍

100萬資料逐個查詢一遍

索引查詢表 2.28 秒

vector lower_bound 0.34 秒

**中thelog可替換為cout,endi、ende替換為endl

cmatchtable2實現為儲存變長的位元組串,有兩組insert和i**atch,一組對應位元組串,一組專門對整數作了介面簡化,cmatchtable2建構函式可以指定使用更短的整數

key_size僅用於整數轉換,因此兩組介面可以交叉呼叫但實際使用中這樣做不合理

clear未完全實現

vector通一放在nodes(用了乙個索引位置來關聯)而不是直接放在cnode裡面是為了特殊目的考慮的,一般把vsubindex換為vectorsub,去掉通過vsubindex獲得sub的**即可

以下為**:

class cmatchtable2

else if(c=base+sub.size())

else

//cout<<__line__<<" "<> const & nodes)const

else

if(c-base> & nodes)

void print()const

};cnode root;

vector> nodes;//第乙個為空,代表所有未定義的

int key_size;

void _insert(char const * key,int size,int data)

索引順序表查詢演算法(分塊查詢演算法)

有時候,可能會遇到這樣的表 整個表中的元素未必有序,但若劃分為若干塊後,每一塊中的所有元素均小於 或大於 其後面塊中的所有元素。我們稱這種為分塊有序。首先,我們需要先建立乙個索引表,索引表中為每一塊都設定 索引項,每乙個索引項都包含兩個內容 在前面建立的索引表的基礎上,我們查詢乙個關鍵字需要兩個步驟...

查詢演算法整理之索引查詢

索引查詢是在索引表和主表 即線性表的索引儲存結構 上進行的查詢。索引查詢的過程是 1 首先根據給定的索引值k1,在索引表上查詢出索引值等於ki的索引項,以確定對應予表在主表中的開始位置和長度,2 然後再根據給定的關鍵字k2,茬對應的子表中查詢出關鍵字等於k2的元素 結點 對索引表或子表進行查詢時,若...

查詢表的約束 索引

獲取某錶的所有索引,包括索引歸屬列名 sp statistics table 獲取索引與索引歸屬列以及描述資訊 sp helpindex table 獲取某錶的約束資訊以及歸屬列 sp helpconstraint table 獲取某錶中的自動增長列的列名 select name from sysc...