亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

SQLServer教程:索引

系統 1987 0

索引

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

一、什么是索引

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

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

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

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

索引可分為以下3類。

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

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

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

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

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

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

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

二、如何創建索引

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

1.使用Microsoft SQLServer Management Studio創建索引

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

SQLServer教程:索引

圖1 使用Microsoft SQL Server Management Studio創建索引

?

2.使用T-SQL語句創建索引

創建索引的語法如下:

        
          
            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)經常被查詢,為了加快查詢速度,現創建索引。由于筆試成績可能會重復,索引只能創建非聚集索引,T-SQL語句如示例1所示。

示例1:

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

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

示例2: ?

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

雖然我們可以指定SQL Server按哪個索引進行數據查詢,但一般不需要手動指定。SQL Server將會根據所創建的索引,自動優化查詢。

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

● 該列用于頻繁搜索。

● 該列用于對數據進行排序。

請不要對下面的列創建索引。

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

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

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

?

SQLServer教程:索引


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 午夜香蕉网 | 中国美女日b | 色欧美亚洲 | 中文在线观看视频 | 国产在线视频一区 | 四虎影片国产精品8848 | 黄色在线视频网 | 一区二区三区日韩精品 | 激情国产白嫩美女在线观看 | 日本一级毛片片在线播放 | 97影院理伦在线观看 | 91亚色视频在线观看 | 午夜噜噜噜私人影院在线播放 | 久久久久久久久免费视频 | 2021国产成人综合亚洲精品 | 欧美大交乱xxxxxbbb | 国产日产亚洲精品 | 牛牛a级毛片在线播放 | 久久亚洲视频 | 91尤物国产尤物福利在线 | 国产精品久久自在自2021 | 视频亚洲一区 | 一级特级aa欧美毛片 | 欧美日韩成人在线 | 久久精品国产亚洲精品2020 | 国产九九热| 日本不卡高清免费 | 久久亚洲国产欧洲精品一 | 精品伊人 | 日本高清中文字幕一区二区三区a | www.亚洲一区二区三区 | a加勒比一本东京 | 亚洲国产天堂在线网址 | 日韩有码在线播放 | 成人a毛片免费全部播放 | a v在线男人的天堂观看免费 | 中文字幕伦视频 | 五月天丁香婷婷综合久久 | 卡通动漫亚洲综合 | a毛片全部免费播放 | 亚洲欧洲一区二区三区久久 |