空間資料庫的索引技術
❶ 資料庫裡面什麼是一級索引
多級索引
空間資料庫的索引是提高空間資料庫存儲效率和空間檢索性能的關鍵技術。介紹了空間資料庫中建立索引的常用技術,給出了一種多級空間索引,詳細討論了該索引的建立演算法以及應用該索引的檢索演算法,並進行了演算法分析。關鍵詞:計算機軟體;間資料庫;空間索引;空間檢索;演算法分析。
中文名
多級索引
方法
索引分割單元格網索引等
解釋
將多個索引方法組合使用
性質
計算機學
快速
導航
原理
含義
多級索引是將多個不同或相同的索引方法組合使用,對單級索引空間或者空間范圍進行多級劃分,解決超大型數據量的GIS系統檢索、分析、顯示的效率問題。多級索引由於其多級的結構特性,往往可以很好地利用計算機硬體資源的並行工作特性,如多CPU,磁碟陣列等,來提高檢索的效率。多級索引方法很多,不同的單級索引組合便可以構成不同的多級索引方法。但是由於每種索引的特性不同,所以如何將多種索引融合成一體構成一種高效的多級索引也是空間索引的一個研究方向。
❷ 空間資料庫系統空間網格索引怎麼解釋
索引
可以利用索引快速訪問資料庫表中的特定信息。索引是對資料庫表中一個或多個列(例如,employee 表的姓氏 (lname) 列)的值進行排序的結構。如果想按特定職員的姓來查找他或她,則與在表中搜索所有的行相比,索引有助於更快地獲取信息。
索引提供指針以指向存儲在表中指定列的數據值,然後根據指定的排序次序排列這些指針。資料庫使用索引的方式與使用書的目錄很相似:通過搜索索引找到特定的值,然後跟隨指針到達包含該值的行。
在資料庫關系圖中,可以為選定的表創建、編輯或刪除索引/鍵屬性頁中的每個索引類型。當保存附加在此索引上的表或包含此表的資料庫關系圖時,索引同時被保存。有關詳細信息,請參見創建索引。
通常情況下,只有當經常查詢索引列中的數據時,才需要在表上創建索引。索引將佔用磁碟空間,並且降低添加、刪除和更新行的速度。不過在多數情況下,索引所帶來的數據檢索速度的優勢大大超過它的不足之處。然而,如果應用程序非常頻繁地更新數據,或磁碟空間有限,那麼最好限制索引的數量。
❸ 資料庫索引原理
資料庫索引原理如下:
使用索引可快速訪問資料庫表中的特定信息。如果想按特定職員的姓來查找人員,則與在表中搜索所有的行相比,索引有助於更快地獲取信息。
索引的實現通常使用B樹及其變種B+樹。在數據之外,資料庫系統還維護著滿足特定查找演算法的數據結構,這些數據結構以某種方式引用(指向)數據,這樣就可以在這些數據結構上實現高級查找演算法。
(3)空間資料庫的索引技術擴展閱讀:
對於有些列不應該創建索引。一般來說,不應該創建索引的的這些列具有下列特點:
1、查詢很少:
對於那些在查詢中很少使用或者參考的列不應該創建索引。這是因為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。
2、少數據值:
對於那些只有很少數據值的列也不應該增加索引。這是因為,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的數據行佔了表中數據行的很大比例,即需要在表中搜索的數據行的比例很大。增加索引,並不能明顯加快檢索速度。
3、定義類型:
對於那些定義為text, image和bit數據類型的列不應該增加索引。這是因為,這些列的數據量要麼相當大,要麼取值很少。
❹ 資料庫索引有哪幾種,怎樣建立索引
資料庫索引的種類:
1、按照索引列值的唯一性,索引可分為唯一索引和非唯一索引
非唯一索引:B樹索引
create index 索引名 on 表名(列名) tablespace 表空間名;
唯一索引:建立主鍵或者唯一約束時會自動在對應的列上建立唯一索引
2、索引列的個數:單列索引和復合索引
3、按照索引列的物理組織方式
B樹索引
create index 索引名 on 表名(列名) tablespace 表空間名;
點陣圖索引
create bitmap index 索引名 on 表名(列名) tablespace 表空間名;
反向鍵索引
create index 索引名 on 表名(列名) reverse tablespace 表空間名;
函數索引
create index 索引名 on 表名(函數名(列名)) tablespace 表空間名;
刪除索引
drop index 索引名
重建索引
alter index 索引名 rebuild
索引的創建格式:
CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>
ON <schema>.<table_name>
(<column_name> | <expression> ASC | DESC,
<column_name> | <expression> ASC | DESC,...)
TABLESPACE <tablespace_name>
STORAGE <storage_settings>
LOGGING | NOLOGGING
COMPUTE STATISTICS
NOCOMPRESS | COMPRESS<nn>
NOSORT | REVERSE
PARTITION | GLOBAL PARTITION<partition_setting>
UNIQUE | BITMAP:指定UNIQUE為唯一值索引,BITMAP為點陣圖索引,省略為B-Tree索引。
<column_name> | <expression> ASC | DESC:可以對多列進行聯合索引,當為expression時即「基於函數的索引」
TABLESPACE:指定存放索引的表空間(索引和原表不在一個表空間時效率更高)
STORAGE:可進一步設置表空間的存儲參數
LOGGING | NOLOGGING:是否對索引產生重做日誌(對大表盡量使用NOLOGGING來減少佔用空間並提高效率)
COMPUTE STATISTICS:創建新索引時收集統計信息
NOCOMPRESS | COMPRESS<nn>:是否使用「鍵壓縮」(使用鍵壓縮可以刪除一個鍵列中出現的重復值)
NOSORT | REVERSE:NOSORT表示與表中相同的順序創建索引,REVERSE表示相反順序存儲索引值
PARTITION | NOPARTITION:可以在分區表和未分區表上對創建的索引進行分區
使用USER_IND_COLUMNS查詢某個TABLE中的相應欄位索引建立情況
使用DBA_INDEXES/USER_INDEXES查詢所有索引的具體設置情況。
在Oracle中的索引可以分為:B樹索引、點陣圖索引、反向鍵索引、基於函數的索引、簇索引、全局索引、局部索引等,下面逐一講解:
一、B樹索引:
最常用的索引,各葉子節點中包括的數據有索引列的值和數據表中對應行的ROWID,簡單的說,在B樹索引中,是通過在索引中保存排過續的索引列值與相對應記錄的ROWID來實現快速查詢的目的。其邏輯結構如圖:
反向鍵索引是一種特殊的B樹索引,在存儲構造中與B樹索引完全相同,但是針對數值時,反向鍵索引會先反向每個鍵值的位元組,然後對反向後的新數據進行索引。例如輸入2008則轉換為8002,這樣當數值一次增加時,其反向鍵在大小中的分布仍然是比較平均的。
反向鍵索引的創建示例:
createindex ind_t on t1(id) reverse;
註:鍵的反轉由系統自行完成。對於用戶是透明的。
四、基於函數的索引:
有的時候,需要進行如下查詢:select * from t1 where to_char(date,'yyyy')>'2007';
但是即便在date欄位上建立了索引,還是不得不進行全表掃描。在這種情況下,可以使用基於函數的索引。其創建語法如下:
create index ind_t on t1(to_char(date,'yyyy'));
註:簡單來說,基於函數的索引,就是將查詢要用到的表達式作為索引項。
五、全局索引和局部索引:
這個索引貌似很復雜,其實很簡單。總得來說一句話,就是無論怎麼分區,都是為了方便管理。
具體索引和表的關系有三種:
1、局部分區索引:分區索引和分區表1對1
2、全局分區索引:分區索引和分區表N對N
3、全局非分區索引:非分區索引和分區表1對N
創建示例:
首先創建一個分區表
createtable student
(
stuno number(5),
sname vrvhar2(10),
deptno number(5)
)
partition by hash (deptno)
(
partition part_01 tablespace A1,
partition part_02 tablespace A2
);
創建局部分區索引(1v1):
create index ind_t on student(stuno)
local(
partition part_01 tablespace A2,
partition part_02 tablespace A1
);--local後面可以不加
創建全局分區索引(NvN):
create index ind_t on student(stuno)
globalpartition by range(stuno)
(
partition p1 values less than(1000) tablespace A1,
partition p2 values less than(maxvalue) tablespace A2
);--只可以進行range分區
創建全局非分區索引(1vN)
createindex ind_t on student(stuno) GLOBAL;