索引查詢表測試** 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...