1. 程式人生 > >學習筆記(二):檢視、索引

學習筆記(二):檢視、索引

知識點內容: 檢視 索引 檢視: 概念: View其實是執行查詢語句後得到的結果,可以模擬成資料表來使用,也成為“虛擬資料表” 檢視與資料表的區別: 資料表實際儲存記錄的地方 檢視不儲存任何記錄,儲存的是查詢語句 檢視的優點: 增強可讀性 資料安全及保密:針對不同使用者,可以建立不同檢視,限制其所能瀏覽和編輯的資料內容。 降低查詢複雜度 方便維護 建立檢視的語法: IF(EXISTS(SELECT * FROM SYS.OBJECTS WHERE NAME =’V_STU’)) DROP VIEW V_STU CREATE VIEW V_STU AS SLECT ID,NAME,AGE,SEX FROM STUDENT 修改檢視的語法 ALTER VIEW V_STU AS SELECT ID,NAME,SEX FROM STUDENT; ALTER VIEW V_STU(編號,名稱,性別) AS SELECT ID,NAME,SEX FROM STUDENT 索引: 概念: 就是資料表中資料和相應的儲存位置的列表, 作用: 可以提高在表或檢視中的查詢資料的速度 分類: 聚集索引 非聚集索引 聚集索引與非聚集索引區別: 聚集索引: 每個表只允許建立一個聚集索引 物理的重排表的資料以符合索引約束 用於經常查詢資料列 非聚集索引 做多可以由249個非聚集索引 建立一個鍵值指向資料在資料頁中的位置 用於從表中查詢大哥值的列 建立索引的語法: CREATE [UNIPUE][CLUSTERED|NOCLUSTERED] INDEX INDEX_NAME ON TABLE_NAME(COLUMN_NAME…) [WITH FILLFACTOR=X] UNIQUE唯一索引 CLUSTERED聚集索引 NOCLUSTERED非聚集索引 FILLFACTOR填充因子大小,範圍在0-100之間,表示索引頁填滿在空間所佔的百分比 實列: IF(EXISTS(SELECT * FROM SYS.INDEXES WHERE NAME=’IDX_STU_NAME’)) DROP INDEX STUDENT.IDX_STU_NAME GO CREATE INDEX IDX_STU_NAME ON STUDENT(NAME) 適合建立索引的列: 當資料庫的某一列被頻繁的用於資料庫查詢時,或者該列用於資料庫進行排序時可以建立成索引。 不適合建立索引的列: 如果列中有幾個不同的值,或者表中僅包含幾行值 因為索引在搜尋資料所花的時間比在表中逐行搜尋花的時間更長 索引的優點: 通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。 可以大大加快資料的檢索速度,是建立索引的最主要的原因。 加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。 在使用分組和排序 子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。 通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。 索引缺點: 耗費時間長, 建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。 空間就會更大。 索引需要佔物理空間,除了資料表佔資料空間之外,每一個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。 降低了資料的維護速度 當對錶中的資料進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了資料的維護速度