日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

SQLServer教程:索引

系統(tǒng) 2378 0

索引

索引提供指針以指向存儲在表中指定列的數(shù)據(jù)值,然后根據(jù)指定的排列次序排列這些指針。 數(shù)據(jù)庫 使用索引的方式與使用書的目錄很相似:通過搜索索引找到特定的值,然后跟隨指針到達包含該值的行。

一、什么是索引

數(shù)據(jù)庫中的索引與書籍中的目錄類似,在一本書中,利用目錄可以快速查找所需信息,無須閱讀整本書。在數(shù)據(jù)庫中,索引使數(shù)據(jù)庫程序無須對整個表進行掃描,就可以在其中找到所需數(shù)據(jù)。書中的目錄是一個詞語列表,其中注明了包含各個詞的頁碼。而數(shù)據(jù)庫中的索引是某個表中一列或者若干列值的集合,以及相應(yīng)的指向表中物理標識這些值的數(shù)據(jù)頁的邏輯指針清單。

● 索引:它是SQL Server編排數(shù)據(jù)的內(nèi)部方法,為SQL Server提供一種方法來編排查詢數(shù)據(jù)的路徑,相當于漢語字(詞)典中按拼音或筆畫排序的目錄。

● 索引頁:數(shù)據(jù)庫中存儲索引的數(shù)據(jù)頁。索引頁存放檢索數(shù)據(jù)行的關(guān)鍵字頁以及該數(shù)據(jù)行的地址指針。索引頁類似于漢語字(詞)典中按拼音或筆畫排序的目錄頁。

索引的作用是通過使用索引,可以大大提高數(shù)據(jù)庫的檢索速度,改善數(shù)據(jù)庫性能。

索引可分為以下3類。

● 唯一索引:唯一索引不允許兩行具有相同的索引值。

如果現(xiàn)有數(shù)據(jù)中存在重復(fù)的鍵值,則一般情況下大多數(shù)數(shù)據(jù)庫都不允許創(chuàng)建唯一索引。當新數(shù)據(jù)使表中的鍵值重復(fù)時,數(shù)據(jù)庫也拒絕接收此數(shù)據(jù)。例如,如果在stulnfo表中的學(xué)員身份證號(stuID)列上創(chuàng)建了唯一索引,則所有學(xué)員的身份證號不能重復(fù)。 WANGYEXX.COM

提示:創(chuàng)建了唯一約束,將自動創(chuàng)建唯一索引。盡管唯一索引有助于找到信息,但為了獲得最佳性能,建議使用主鍵約束。

● 主鍵索引:在數(shù)據(jù)庫關(guān)系圖中為表定義一個主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特殊類型。主鍵索引要求主鍵中的每個值是唯一的。當在查詢中使用主鍵索引時,它還允許快速訪問數(shù)據(jù)。

● 聚集索引:在聚集索引中,表中各行的物理順序與鍵值的邏輯(索引)順序相同。表只能包含一個聚集索引。例如,漢語字(詞)典默認按拼音排序編排字典中的每頁頁碼。拼音字母a、b、c、d、…、x、y、z就是索引的邏輯順序,而頁碼1、2、3…就是物理順序。默認按拼音排序的字典,其索引順序和邏輯順序是一致的,即拼音順序較后的字(詞)對應(yīng)的頁碼也較大,如拼音“ha”對應(yīng)的字(詞)頁碼就比拼音“ba”對應(yīng)的字(詞)頁碼靠后。

如果不是聚集索引,則表中各行的物理順序與鍵值的邏輯順序不匹配。聚集索引比非聚集索引有更快的數(shù)據(jù)訪問速度。例如,按筆畫排序的索引就是非聚集索引,“1”畫的字(詞)對應(yīng)的頁碼可能比“3”畫的字(詞)對應(yīng)的頁碼大(靠后)。

提示:在SQL Server中,一個表只能創(chuàng)建一個聚集索引,但可以有多個非聚集索引。設(shè)置某列為主鍵,該列就默認為聚集索引。

二、如何創(chuàng)建索引

創(chuàng)建索引的方法有兩種:使用Microsoft SQL Server Management Studio和T-SQL語句。

1.使用Microsoft SQLServer Management Studio創(chuàng)建索引

在表的設(shè)計視圖巾,單擊鼠標右鍵,在彈出的快捷菜單中選擇“索引/鍵”命令,然后單擊“添加”按鈕創(chuàng)建索引,如圖1所示。您可以選擇索引列、指定索引的類型:UNIQUE(唯一索引)、CLUSTERED(聚集索引)以及填充因子(指定每個索引頁的填滿程度,一般很少指定),這些選項的具體含義還可以通過單擊“幫助”按鈕查看幫助。

SQLServer教程:索引

圖1 使用Microsoft SQL Server Management Studio創(chuàng)建索引

?

2.使用T-SQL語句創(chuàng)建索引

創(chuàng)建索引的語法如下:

        
          
            CREATE
          
          
            [
          
          
            UNIQUE
          
          
            ]
          
          
            [
          
          
            CLUSTERED | NONCLUSTERED
          
          
            ]
          
          
            INDEX
          
          
             index_name 
          
          
            ON
          
           table_name (column_name
          
            [
          
          
            , column_name
          
          
            ]
          
          
            ...) 
          
          
            [
          
          
            WITH FILLFACTOR=x 
          
          
            ]
          
        
      
View Code

其中,

● UNIQUE指定唯一索引,可選。

● CLUSTERED、NONCLUSTERED指定是聚集索引還是非聚集索引,可選。

● FILLFACTOR表示填充因子,指定一個O~100的值,該值指示索引頁填滿的空間所占的百分比。

因為成績表stuMarks中的筆試列(writtenExam)經(jīng)常被查詢,為了加快查詢速度,現(xiàn)創(chuàng)建索引。由于筆試成績可能會重復(fù),索引只能創(chuàng)建非聚集索引,T-SQL語句如示例1所示。

示例1:

        
          
            USE
          
          
             stuDB 
          
          
            GO
          
          
            /*
          
          
            --檢測是否存在該索引(索引存放在系統(tǒng)表sysindexes中)----
          
          
            */
          
          
            IF
          
          
            EXISTS
          
           (
          
            SELECT
          
           name 
          
            FROM
          
          
             sysindexes 
          
          
            WHERE
          
           name 
          
            =
          
          
            '
          
          
            IX_stuMarks_writtenExam
          
          
            '
          
          
            ) 
          
          
            DROP
          
          
            INDEX
          
           stuMarks.IX_stuMarks_writtenExam  
          
            --
          
          
            刪除索引
          
          
             /*
          
          
            --筆試列創(chuàng)建聚集索引:填充因子為30%--
          
          
            */
          
          
            CREATE
          
          
            NONCLUSTERED
          
          
            INDEX
          
          
             IX_stuMarks_writtenExam 
          
          
            ON
          
          
             stuMarks(writtenExam) 
          
          
            WITH
          
          
            FILLFACTOR
          
          
            =
          
          
            30
          
          
            GO
          
        
      
View Code

創(chuàng)建索引后,可以像查找字詞一樣,選擇拼音查找方式或筆畫查找方式。也可以指定SQL Server數(shù)據(jù)查詢的查詢方式,如示例2所示。

示例2: ?

        
          
            /*
          
          
            --指定按索引:IX_stuMarks_writtenExam查詢--
          
          
            */
          
          
            SELECT
          
          
            *
          
          
            FROM
          
          
             stuMarks (
          
          
            INDEX
          
          
            =
          
          
            IX_stuMarks_writtenExam) 
          
          
            WHERE
          
           writtenExam 
          
            BETWEEN
          
          
            60
          
          
            AND
          
          
            90
          
        
      
View Code

雖然我們可以指定SQL Server按哪個索引進行數(shù)據(jù)查詢,但一般不需要手動指定。SQL Server將會根據(jù)所創(chuàng)建的索引,自動優(yōu)化查詢。

使用索引可加快數(shù)據(jù)檢索速度,但為每個字段都建立索引是沒有必要的,因為索引自身也需要維護,并占用一定的磁盤空間,可以按照下列標準選擇建立索引的列。

● 該列用于頻繁搜索。

● 該列用于對數(shù)據(jù)進行排序。

請不要對下面的列創(chuàng)建索引。

● 列中僅包含幾個不同的值。

● 表中僅包含幾行。為小型表創(chuàng)建索引可能不太劃算,因為SQL Server在索引中搜索數(shù)據(jù)所花的時間比在表中逐行搜索所花的時間更長。

轉(zhuǎn)載請注明原文地址: http://www.wangyexx.com/db/sqlbasic/1461.html

?

SQLServer教程:索引


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 池州市| 江阴市| 黔东| 吴川市| 定州市| 来安县| 肃北| 民乐县| 施秉县| 双牌县| 平和县| 沁源县| 辰溪县| 丘北县| 彰武县| 织金县| 巴马| 河源市| 加查县| 永城市| 岑溪市| 泽普县| 尚志市| 渝北区| 陇川县| 阜康市| 无极县| 嘉善县| 神农架林区| 鹤山市| 措勤县| 德令哈市| 涿鹿县| 马龙县| 鹿邑县| 景宁| 上饶市| 葫芦岛市| 富平县| 新干县| 密云县|