索引的建立與刪除

建立索引根據是加快查詢速度的有效手段。用戶可以根據應用環境的需要,在基本表上建立一個或多個索引,以提供多種存取路徑,加快查找速度。

索引的優點和缺點

索引的優點很明顯,那就是加快查詢速度。

但是索引也有不適宜的情況,原因是建立索引後,更新索引上的數據時會導致表中記錄的物理順序的變更,代價較大,且會佔用一定的系統資源,因此對於經常更新的列不宜建立索引。


建議建立索引的情況

  • 主碼和外碼一般會建立索引
  • 以讀爲主或只讀的表,只要空間允許可以建立多個索引
  • 等值查詢,且滿足條件的元組數小於總元組數的5%,可以考慮在相關屬性上建立索引
  • 範圍查詢

不宜建立索引的情況

  • 不出現或很少出現查詢的屬性
  • 屬性值很少的屬性
  • 屬性值分佈嚴重不均的屬性
  • 經常更新的屬性或表
  • 過長的屬性
  • 太小的表

建立索引

建立索引的一般格式爲:

create [unique][cluster]index<索引名>
on <表名>(<列名>[<次序>][,<列名>[<次序>]]...);

其中,表名是要建立索引的基本表的名字。索引可以建立在一列或多列上,每個<列名>後面還可以用<次序>指定索引值的排列次序,可選ASC(升序)或DESC(降序),缺省值爲ASC。
unique表示此索引的每一個索引值只對應唯一的數據記錄。
cluster表示要建立的索引是聚簇索引。所謂聚簇索引是指索引項的數據與表中記錄的物理順序一致的索引組織。
例:在Student表上的姓名列建立一個聚簇索引。

create cluster index Stusname
on Student(Sname);

例:在sc表的Sno(升序), Cno(升序)和grade (降序)三列上建立一個普通索引SCno。

create index SCno
on table SC(Sno,Cno,Grade DESC);

刪除索引

刪除索引的一般格式爲:

drop index<索引名>;

例:刪除Student表上的Stusname索引。

drop index Stusname;
發佈了67 篇原創文章 · 獲贊 71 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章