資料庫系統概論-[04]索引,資料庫系統概論04
1、索引概述
建立索引是加快查詢速度的有效手段,使用者可以根據應用環境的需要,在基本表上建立一個或者多個索引,以提供多種存取路徑,加快尋找速度。
一般來說,建立與刪除索引由資料庫管理員DBA或者表的屬主(owner),即建立表的人負責完成,系統在存取資料時會自動選擇合適的索引作為存取路徑,使用者不必也不能顯示地選擇索引。
2、索引優點和缺點
首先明白為什麼建立索引,因為建立索引可以大大提高系統的效能。
- 通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。
- 可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。
- 可以加速表和表之間的串連,特別是在實現資料的參考完整性方面特別有意義。
- 在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。
- 通過使用索引,可以在查詢的過程中,使用最佳化隱藏器,提高系統的效能。
增加索引有如此多的優點,為什麼不對錶中的每一個列建立一個索引呢?這種想法固然有其合理性,然而也有其片面性,雖然索引有許多的優點,但是,為表中的每一個列都增加索引,是非常不明智的,這是因為,增加索引也有許多不利的一個方面。
- 建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。
- 索引需要佔物理空間,除了資料表占資料空間之外,每一個索引還要佔一定的物理空間,如果要建立舉聚簇索引,那麼需要的空間就會更大。
- 當對錶中的資料進行增加、刪除和修改的時候,索引也要動態維護,這樣就降低了資料的維護速度。
- 索引是建立在資料庫表中的某些列上,因此在建立索引的時候,應該仔細考慮在哪些列上可以建立索引,在哪些列上不能建立索引,一般來說,應該在這些列上建立索引:
1、在經常需要搜尋的列上,可以加快搜尋速度2、在作為主鍵的列上,強制該列的唯一性和組織表中資料的排列結構。3、在經常用在串連的列上,這些列主要是一些外鍵,可以加快串連的速度。4、在經常需要根據範圍進行搜尋的列上建立索引,因為索引已經排序,其指定的範圍是連續的。5、在經常需要排序的列上建立索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間。6、在經常使用where子句中的列上面建立索引,加快條件的判斷速度。同樣對於有些列是不應該建立索引的,一般來說,不應該建立索引的這些列具有下列特點:1、對於那些在查詢中很少使用或者參考的列不應該建立索引,這是因為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度,相反,由於增加了索引,反而降低了系統的維護速度和增加了空間需求。2、對於那些只有很少資料值的列也不應該增加索引,這是因為,由於這些列的取值很少,比如人事表的性別列,在查詢的結果中,結果集的資料行佔了表中資料行的很大比例,即需要在表中搜尋的資料行的比例很大,著呢國家索引,並不能明顯加快檢索速度。3、對於那些定義為text、Image和bit資料類型的列不應該增加索引,這是因為,這些列的資料量要麼相當大,要麼取值很少。4、當修改效能遠遠大於檢索效能時,不應該建立索引,這是因為,修改效能和檢索效能是互相矛盾的,當增加索引時,會提高檢索效能,但是會降低修改效能,當減少索引時,會提高修改效能,降低檢索效能,因此,當修改效能遠遠大於檢索效能時,不應該建立索引。
3、建立索引 建立索引有多種方法,這些方法包括直接建立索引方法和間接建立索引的方法,直接建立索引,使用如下語句:CREATE [UNIQUE][CLUSTER][INDEX <索引名> ON <表名> (<列名>[<次序>][,<列名>[<次序>]]......);說明:其中<表名>是要建立索引的基本表的名字,索引還可以建立在該表的一列或者多列上,各列之間用逗號分隔,每個<列名>後面還可以用<次序>指定索引值的排序次序,可選ASC(升序)或者DESC(降序),預設值為ASC。UNIQUE表明此索引的每一個索引值值對應唯一的資料記錄。CLUSTER表示要建立的索引是聚簇索引,所謂聚簇索引是指索引項目的順序與表中記錄的物理順序一致的索引組織。還有一種方法建立索引,在表中定義主鍵約束或者唯一約束時,同時也建立了索引,雖然,這兩種方法都可以建立索引,但是它們建立索引的具體內容是有區別的:當在表上定義主鍵或者唯一約束時,如果表中已經有了使用CREATE INDEX語句建立的標準索引的,那麼主鍵約束或者唯一性限制式建立的索引覆蓋以前建立的標準索引,也就是說主鍵約束或者唯一約束建立的索引的優先順序高於使用CREATE INDEX語句建立的索引。eg:為學生-課程資料庫中的Student,Course,SC 3個表建立索引,其中Student表按學號升序建唯一索引,Course表按課程號升序建唯一索引,SC表按學號升序和課程號降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
4、刪除索引索引一經建立,就有系統使用和維護它,不需要使用者的幹預,建立索引是為了減少查詢操作的時間,但如果資料增刪改頻繁,系統會花費許多時間來維護索引,從而降低了查詢效率,這時可以刪除一些不必要的索引。在SQL中,刪除索引使用DROP INDEX 語句,其一般格式為:DROP INDEX <索引名>;eg:刪除Student表的Stusname索引DROP INDEX Stusname;刪除索引時,系統會同時刪除資料字典中刪除有該索引的描述。
5、總結在RDBMS中索引一般採用B+樹、HASH索引來實現,B+樹索引具有動態平衡的優點,HASH索引具有尋找速度快的特點,索引是關聯式資料庫的內部實現技術,屬於內模式的範疇。使用者使用CREATE INDEX語句定義索引時,可以定義索引是唯一索引、非唯一索引或者聚餐索引,至於某一個索引是採用B+樹,還是HASH索引則由具體的RDBMS來決定。
資料庫系統概論
資料:科學實驗、檢驗、統計等所獲得的和用於科學研究、技術設計、查證、決策等的數值。
資料庫:(Database)是按照資料結構來組織、儲存和管理資料的倉庫,它產生於距今五十年前,隨著資訊技術和市場的發展,特別是二十世紀九十年代以後,資料管理不再僅僅是儲存和管理資料,而轉變成使用者所需要的各種資料管理的方式。資料庫有很多種類型,從最簡單的儲存有各種資料的表格到能夠進行海量資料存放區的大型資料庫系統都在各個方面得到了廣泛的應用。
資料庫系統:(database systems),是由資料庫及其管理軟體組成的系統。它是為適應資料處理的需要而發展起來的一種較為理想的資料處理的核心機構。它是一個實際可啟動並執行儲存、維護和應用系統提供資料的軟體系統,是儲存介質、處理對象和管理系統的集合體。
資料庫管理系統:(database management system)是一種操縱和管理資料庫的大型軟體,用於建立、使用和維護資料庫,簡稱dbms。它對資料庫進行統一的管理和控制,以保證資料庫的安全性和完整性。使用者通過dbms訪問資料庫中的資料,資料庫管理員也通過dbms進行資料庫的維護工作。它可使多個應用程式和使用者用不同的方法在同時或不同時刻去建立,修改和詢問資料庫。DBMS提供資料定義語言 (Data Definition Language)DDL(Data Definition Language)與資料操作語言DML(Data Manipulation Language),供使用者定義資料庫的模式結構與許可權約束,實現對資料的追加、刪除等操作。
《資料庫系統概論》這門課程上過的進
前三四章的東西學好就差不多了
第一章,概念-考試肯定考
第二章,可能是關聯式模式-這個主要就是邏輯關係弄明白,不過一些符號我都忘了什麼意思了
第三章,我記得是sql語句,這個比較重點,也是考試中的重點,當然課設的時候也必須用到它
第四章,索引之類的東西,考試可能不會考太多,但是設計的時候會用到
其他章:可能會簡單介紹觸發器或者預存程序什麼的,考試分不能太多,但是設計的時候十分有用