SQL——索引


 

1. 什么是索引

    索引是SQlServer編排數據的內部方法,是檢索表中數據的直接通道。它類似漢語詞典里面

的拼音目錄,通過它可以快速查找到某個字詞。

    索引頁是數據庫中存儲說要的數據頁。索引頁存放檢索數據行的關鍵字頁及數據行的地址指針。索引頁類似於漢語字典中按拼音或筆畫排序的目錄頁。

 

2. 索引分類

    唯一索引: 創建唯一約束會自動創建唯一索引。 它對應的列中僅允許有一個null值。

   主鍵索引: 是唯一索引的一種特殊類型。創建主鍵會自動創建主鍵索引。 要求主鍵中的每個值是非空,唯一的。

   聚集索引: 表中各行的物理順序與鍵值的邏輯順序相同。

   非聚集索引: 表中各行數據存放的物理順序與鍵值的邏輯順序不匹配。聚集索引比非聚集索引有更快的數據訪問速度。

   復合索引: 將多個列組合作為索引

   全文索引: 是一種特殊類型的寄語標記的功能型索引,由SQL server 中全文引擎服務創建和維護。

 

3. 創建索引

   方法一: 使用 SSMS 創建索引

   方法二: 使用T-SQL語句創建

   語法:

      create  [unique] [clustered  |   nonclustered]  index  index_name

      on  table_name  (column_name[, column_name] ...)

      [with  fillfactor=x]

     說明: fillfactor 表示填充因子, 指定一個1-100的值,該值指定索引頁填充的空間所占的百分比。

 

4. 查看索引

    方法一: 用系統存儲過程 sp_helpIndex查看

               exec  sp_helpIndex  表名

    方法二: 用視圖 sys.indexes 查看

        use  database

                select * from sys.indexes

 

5. 刪除索引

   if  exists (select name from sysindexes  where name = index_name)

             drop index table.index_name

 

6. 注意事項

     針對以下情況創建索引:

          頻繁搜索的列

         經常用作查詢選擇的列

         經常排序、分組的列

         經常用作連接的列(主外鍵)

    針對以下情況不創建索引:

          僅包含幾個不同值的列

           表中僅包含幾行數據

    經驗:

           查詢是盡量少用 "*" 返回全部列,不要返回不需要的列

           索引盡量在字節數少的列上建立索引

     where 字句中有多個表達式時,包含索引列的表達式應置於其他料件表達式之前

           避免在order by 子句中使用表達式

           根據業務數據發生頻繁,定期重新生成或重新組織索引,進行碎片整理

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM