1.索引的種類和功能
聚集索引:每乙個普通表有且只有乙個聚集索引;
唯一索引:索引資料根據索引鍵唯一;
函式索引:包含函式/表示式的預先計算的值;
位圖索引:對低基數的列建立位圖索引;
位圖連線索引:針對兩個或者多個表連線的點陣圖索引,主要用於資料倉儲中;
全文索引:在表的文字列上而建的索引。
2.何時使用索引
如果需要經常地檢索大表中的少量的行,就為查詢鍵建立索引;
為了改善多個表的連線的效能,可為連線列建立索引;
主鍵和唯一鍵自動具有索引,在外鍵上很多情況下也建立索引;
小表不需要索引。
3.建立索引的條件
要被索引的表是在自己的模式中 ;
在要被索引的表上有 create index 許可權;
具有 create any index 資料庫許可權。
4.建立索引
4.1. 聚集索引
例如:create cluster index index_cluster on userinfo(name);
為userinfo表建立聚集索引,索引名:index_cluster,索引字段:name
sql> explain select * from userinfo where name ='1';
1 #nset2: [0, 1, 156]
2 #prjt2: [0, 1, 156]; exp_num(5), is_atom(false)
3 #csek2: [0, 1, 156]; scan_type(asc), index_cluster(userinfo), scan_range['1','1']
新建聚集索引會重建這個表以及其所有索引,包括二級索引、函式索引,是乙個代價非常大的操作。
最好在建表時就確定聚集索引鍵,或在表中資料比較少時新建聚集索引,而盡量不要對資料量非常大的表建立聚集索引。
4.2.唯一索引
例如:create unique index index_unique on userinfo(cardid);
為userinfo表建立唯一索引,索引名:index_unique,索引字段:cardid
sql> explain select * from userinfo where cardid = '1';
1 #nset2: [0, 1, 156]
2 #prjt2: [0, 1, 156]; exp_num(5), is_atom(false)
3 #blkup2: [0, 1, 156]; index_unique(userinfo)
4 #ssek2: [0, 1, 156]; scan_type(asc), index_unique(userinfo), scan_range['1','1']
4.3.函式索引
例如:create index index_fun on amt(price*cnt);
select * from amt where price*cnt > 10000;
為amt表建立函式索引,索引名:index_fun,索引字段:price*cnt.
sql> explain select * from amt where price*cnt >10000;
1 #nset2: [0, 1, 94]
2 #prjt2: [0, 1, 94]; exp_num(5), is_atom(false)
3 #blkup2: [0, 1, 94]; ind_fun(amt)
4 #ssek2: [0, 1, 94]; scan_type(asc), ind_fun(amt), scan_range(exp_cast(10000),max]
4.4.點陣圖索引
例如:create bitmap index index_bitmap on userinfo1(***);
sql> explain select * from userinfo1 where ***=0;
1 #nset2: [0, 1, 61]
2 #prjt2: [0, 1, 61]; exp_num(4), is_atom(false)
3 #blkup2: [0, 1, 61]; index_bitmap(userinfo1)
4 #ssek2: [0, 1, 61]; scan_type(asc), index_bitmap(userinfo1), scan_range[0,0]
5.重建索引
使用重建索引來對索引的資料進行重組,使資料更加緊湊,並釋放不需要的空間,從而提高訪問效率和空間效率。
sp_rebuild_index(schema_name varchar(256), index_id int);
scheam_name為索引所在的模式名,index_id為索引 id。
例如:sp_rebuild_index(『sysdba』, 1547892);
水平分割槽子表,臨時表和系統表上建的索引不支援重建-
虛索引和聚集索引不支援重建
6.刪除索引
要想刪除索引,則該索引必須包含在使用者的模式中或使用者必須具有 drop any index資料庫許可權。
索引刪除之後,該索引的段的所有簇都返回給包含它的表空間,並可用於表空間中的其他物件。
如何刪除索引,取決於是否是用 create index或和 create cluster index語句明確地建立該索引的,是則可以用 drop index 語句刪除該索引。
不能直接刪除與已啟用的 unique key鍵或 primary key 鍵約束相關的索引。
要刪除乙個與約束相關的索引,必須停用或刪除該約束本身。
如下面的語句刪除主鍵約束pk_emp_name,同時刪除其對應的索引。
alter table emp drop constraint pk_emp_name;
7.檢視索引資訊
通過 indexdef系統函式檢視索引的定義
indexdef(index_id int, preflag int);
index_id 為索引 id,preflag 表示返回資訊中是否增加模式名字首。
例如:select indexdef(1547892, 0);或 select indexdef(1547892, 1);
也可以通過檢視檢視索引資訊
select table_name,index_name from dba_indexes where table_name=表名
達夢資料庫的索引管理
在關聯式資料庫中,索引是一種單獨的 物理的對資料庫表中一列或多列的值進行排序的一種儲存結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單。達夢支援的索引 二級索引,位圖索引,唯一索引,復合索引,函式索引,分割槽索引等。一 建立索引的規則 適合建索引的情況 經常...
mysql資料庫遷移達夢資料庫
我們安裝好達夢資料庫之後,便可以在開始 所有工具 達夢資料庫中看到它的結構 我們選擇dm資料遷移工具,然後點選進去 然後在遷移管理裡右鍵新建工程 然後輸入工程名即可,可以隨便起。點選確定 然後選中專案下的遷移,右鍵新建遷移 遷移名稱也是一樣,可以隨便起。點選確定 然後看到該頁面,點選下一步 然後選擇...
達夢資料和mysql資料庫的區別
介紹 達夢資料庫管理系統是達夢公司推出的具有完全自主智財權的高效能資料庫管理系統,簡稱dm,它具有如下特點 達夢資料庫管理系統相容多種硬體體系,可執行於x86 x64 sparc power等硬體體系之上。dm各種平台上的資料儲存結構和訊息通訊結構完全一致,使得dm各種元件在不同的硬體平台上具有一致...