第4章 索引和視圖

重點一:索引
    (1)定義:索引是數據表中數據和相應存儲位置的列表。(一個頁佔8KB的存儲空間)
    (2)作用:索引可以提高在表和視圖中查找數據的速度。
    (3)分類:1.聚集索引:指表中數據行的物理存儲順序與索引順序完全相同。(當表中有主鍵時會自動生成聚集索引)
         2.非聚集索引:不改變數據行的物理存儲位置,數據與索引分開存儲,通過索引指向的地址與表中的數據發生關係。
        非聚集索引的特點:非聚集索引包含聚集函數,它數據唯一性高,數據量較少。
    聚集索引和非聚集索引的區別:
    1.一張表只能有一個聚集索引;最多有249個非聚集索引。
    2.聚集索引:物理的重排表中的數據以符合索引約束;非聚集索引:鍵值指向數據在數據頁中的位置。
    3.聚集索引指定表中的存儲順序;非聚集索引指定表的邏輯順序。    
    4.聚集索引用於經常查找數據的列;非聚集縮影用於從中查找單個值的列。

    創建索引的語法格式:
    create[unique][clustered/nonclustered]--!當數據唯一是可加unique
    index index_name
    on table_name(column_name...)--!表名
    [with fillfactor=x]--填充因子:0-100之間的值,表示索引填充的百分比,一般在70-80之間。
    
    刪除索引:
    --如果存在該索引,先將其刪除掉
    IF exists(SELECT * FROM sys.indexes WHERE name = 'IX_score')
    DROP index 表名.IX_score

    
    --使用索引
    --指定按索引查詢
    SELECT * FROM stuMarks WITH(index = IX_score)
    WHERE score between 60 and 90

    重複性高的列,數據量特別少的表,不適合(沒有必要)創建索引。

*重點二:視圖
    (1)定義:視圖是一張虛擬表,其結構和數據建立在對錶的查詢基礎之上。
    (2)語法格式:
    CREATE VIEW view_name [(列名...)]
    [with encryption]--加密視圖(加密視圖定義數據)
    AS
    <SELECT語句>
    go
    select * from 視圖名
 
    select * from information_schema.views--查看所有視圖信息

    刪除視圖:
    --如果存在該視圖,先將其刪除掉
    IF exists(SELECT * FROM sys.views WHERE name = 'view_tableName')
    DROP index 表名.view_tableName

        
    --使用視圖
    select * from view_tableName

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章