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

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條評論
主站蜘蛛池模板: 久久精品亚洲精品国产欧美 | 在线播放精品一区二区啪视频 | 久久国产热这里只有精品 | 奇米第四色首页 | 成人夜色香网站在线观看 | 国内自拍一二三四2021 | 在线看一区二区 | 全免费a级毛片免费看不卡 全免费a级毛片免费看视频免 | 国产大片91精品免费观看不卡 | 国产精品久久久久影院 | 天天添天天干 | 一区二区三区不卡免费视频97 | 亚洲国产品综合人成综合网站 | 国内精品视频九九九九 | 草草影院一级毛片a级 | 欧美男女视频 | 91最新免费地址入口 | 午夜剧j | 国产香蕉视频在线 | 国产成人亚洲综合无 | 天天射久久 | 美女一级a毛片免费观看 | 欧美精品久久久久久久免费观看 | 热久久久久久久 | 成人看的一级毛片 | 亚洲精品动漫一区二区三区在线 | 精品一成人岛国片在线观看 | 青青草免费视频在线播放 | 日日爽爽| 97在线公开视频 | 国产二区在线播放 | 羞羞视频免费网站 | 99久久久国产精品免费牛牛四川 | 欧美同房免姿势108费视频 | 狠久久| 日韩伦理一区二区三区 | 欧美亚洲桃花综合 | 久久er热这里只有精品23 | 欧美一级午夜免费视频你懂的 | 91视频免费观看高清观看完整 | 日韩欧美综合在线二区三区 |