以《漢語大詞典》的目錄頁(索引)為例:就像《漢語大詞典》中的漢字是按頁存儲壹樣,SQL Server中的數據記錄也是按頁存儲的,每頁的容量壹般為4 K,為了加快查找速度,漢語單詞詞典壹般都有按拼音、筆畫、偏旁等排序的目錄(索引)。我們可以選擇按拼音或筆畫搜索,快速找到需要的字(詞)。
同樣,SQL Server允許用戶在表中創建索引,並按列指定預排序,從而大大提高了查詢速度。
SQL Server中的數據也是按頁存儲的(4KB)。
索引:是SQL Server整理數據的內部方法。它為SQL Server提供了壹種排列查詢數據的方法。
索引頁:數據庫中存儲索引的數據頁;索引頁類似於漢語詞典中按拼音或筆畫排序的目錄頁。
索引的作用:通過使用索引,可以大大提高數據庫的檢索速度,提高數據庫的性能。
變址類型
唯壹索引:唯壹索引不允許兩行具有相同的索引值。
主鍵索引:為表定義主鍵將自動創建主鍵索引,這是壹種特殊類型的唯壹索引。主鍵索引要求主鍵中的每個值都是唯壹的,並且不能為空。
聚集索引:表中行的物理順序與鍵值的邏輯(索引)順序相同,每個表只能有壹個。
非聚集索引:非聚集索引指定表的邏輯順序。數據存儲在壹個位置,索引存儲在另壹個位置。索引包含指向數據存儲位置的指針。可以有多個,少於249個。
索引類型:再次以漢語詞典為例,希望妳能理解聚集索引和非聚集索引的概念。
唯壹索引:
唯壹索引不允許兩行具有相同的索引值。
如果現有數據中有重復的鍵值,大多數數據庫不允許將新創建的惟壹索引與表壹起保存。當新數據將重復表中的鍵值時,數據庫也拒絕接受該數據。例如,如果在stuInfo表中的student ID列上創建了唯壹的索引,那麽所有學生的ID號都不能重復。
提示:已經創建了唯壹約束,並且將自動創建唯壹索引。盡管唯壹索引有助於查找信息,但為了獲得最佳性能,建議使用主鍵約束或唯壹約束。
主鍵索引:
為數據庫圖表中的表定義主鍵將自動創建主鍵索引,這是壹種特殊類型的唯壹索引。主鍵索引要求主鍵中的每個值都是唯壹的。在查詢中使用主鍵索引時,它還允許快速訪問數據。
聚集索引
在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。壹個表只能包含壹個聚集索引。例如,默認情況下,中文單詞詞典按照拼音排序來排列詞典中每壹頁的頁碼。拼音字母A,B,C,D … X,Y,Z是索引的邏輯順序,而頁碼1,2,3 …是物理順序。默認按拼音排序的詞典,索引順序和邏輯順序是壹樣的。也就是說拼音順序較低的字(詞)頁碼較大。比如拼音“哈”對應的字(詞)的頁碼在拼音“巴”對應的字(詞)的頁碼後面。
非聚集索引
如果不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。聚集索引的數據訪問速度比非聚集索引快。例如,按筆畫排序的索引為非聚集索引,用“1”繪制的字(詞)的頁碼可能大於(小於)用“3”繪制的字(詞)的頁碼。
提示:在SQL Server中,壹個表只能創建1個聚集索引和多個非聚集索引。將某列設置為主鍵,默認情況下該列是聚集索引。
如何創建索引
使用T-SQL語句創建索引的語法:
創建[唯壹的][聚集的|非聚集的]
索引索引名稱
在表名(列名…)上
[填充因子=x]
Q UNIQUE表示唯壹的索引,這是可選的。
q聚集和非聚集表示聚集索引或非聚集索引,可選。
Q FILLFACTOR指示填充因子,並指定壹個介於0和100之間的值,該值指示索引頁填充的空間的百分比。
在stuMarks表的writtenExam列中創建索引:
使用stuDB
去
如果存在(從sysindexes中選擇名稱
其中name = 'IX_writtenExam ')
刪除索引標記。IX_writtenExam
/*-為寫入的列創建非聚集索引:填充因子為30%-*/
創建非聚集索引IX_writtenExam
關於stuMarks(writtenExam)
填充因子= 30
去
/*-指定按索引IX_writtenExam-*/進行查詢
SELECT * FROM stu marks(INDEX = IX _ written exam)
在60和90之間寫壹個例子
盡管我們可以指定SQL Server查詢數據所依據的索引,但我們通常不需要手動指定它。SQL Server將根據我們創建的索引自動優化查詢。
指數的利與弊
優勢
–加快訪問速度。
–加強行的唯壹性。
劣勢
–索引表需要數據庫中更多的存儲空間。
–操作數據的命令需要更長的處理時間,因為它們需要更新索引。
創建索引的準則
請根據以下標準選擇要索引的列。
–此欄用於頻繁搜索。
–該列用於對數據進行排序。
不要使用以下列創建索引:
–列只包含幾個不同的值。
–該表只包含幾行。為小表創建索引可能不劃算,因為SQL Server在索引中搜索數據比在表中逐行搜索數據花費的時間更長。