欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

轉:SQL Server 索引和視圖

系統 1908 0

SQL Server 索引和視圖

? 索引

??? 1、 什么是索引

??????? 索引就是數據表中數據和相應的存儲位置的列表,利用索引可以提高在表或視圖中的查找數據的速度。

?

??? 2、 索引分類

??????? 數據庫中索引主要分為兩類:聚集索引和非聚集索引。SQL Server 2005還提供了唯一索引、索引視圖、全文索引、xml索引等等。聚集索引和非聚集索引是數據庫引擎中索引的基本類型,是理解其他類型索引的基礎。

?

??? # 聚集索引

??????? 聚集索引是值表中數據行的物理存儲順序和索引的存儲順序完全相同。聚集索引根據索引順序物理地重新排列了用戶插入到表中的數據,因此,每個表只能創建一個聚集索引。聚集索引經常創建在表中經常被搜索到的列或按順序訪問的列上。在默認情況下,主鍵約束自動創建聚集索引。

?

??? # 非聚集索引

??????? 非聚集索引不改變表中數據列的物理存儲位置,數據與索引分開存儲,通過索引指向的地址與表中的數據發生關系。

??????? 非聚集索引沒有改變表中物理行的位置,索引可以在以下情況下使用非聚集索引:

??????? 一、如果某個字段的數據唯一性比較高

??????? 二、如果查詢所得到的數據量比較少

?

聚集索引和非聚集索引的區別:

聚集索引

非聚集索引

每個表只允許創建一個聚集索引

最多可以有249個非聚集索引

物理的重排表中的數據以符合索引約束

創建一個鍵值列表,鍵值指向數據在數據頁中的位置

用于經常查找數據的列

用于從表中查找單個值的列

??? # 其他類型索引

??? 除了以上索引,還有以下類型索引:

??????? a、 唯一索引:如果希望索引鍵都不同,可以創建唯一索引。聚集索引和非聚集索引都可以是唯一索引。

??????? b、 包含新列索引:索引列的最大數量是16個,索引列的字節總數的最高值是900。如果當多個列的字節總數大于900,切又想在這些劣種都包含索引是,可以使用包含性列索引

??????? c、 視圖索引:提供視圖查詢效率,可以視圖的索引物理化,也就是說將結果集永久存儲在索引中,可以創建視圖索引。

??????? d、 XML索引:是與xml數據關聯的索引形式,是XML二進制blob的已拆分持久表示形式

??????? e、 全文索引:一種特殊類型的基于標記的功能性功能,用于幫助在字符串中搜索賦值的詞

???

??? 3、 創建索引

??? 語法

          
            create
          
           [
          
            unique
          
          ] [
          
            clustered
          
           | noclustered]
        
          
            index
          
           index_name
        
          
            on
          
           table_name (column_name ...)
        
          [
          
            with
          
          
            fillfactor
          
          =x]
        

??? unique唯一索引

??? clustered聚集索引

??? noclustered非聚集索引

??? fillfactor填充因子大小,范圍在0-100直接,表示索引頁填滿的空間所占的百分比。

?

??? 示例

          
            if
          
           (
          
            exists
          
           (
          
            select
          
           * 
          
            from
          
           sys.indexes 
          
            where
          
           name = 
          
            'idx_stu_name'
          
          ))
        
          
            drop
          
          
            index
          
           student.idx_stu_name
        
          
            go
          
        
          
            create
          
          
            index
          
           idx_stu_name
        
          
            on
          
        
          student(name);
        
          ?
        
          --聯合索引
        
          
            if
          
           (
          
            exists
          
           (
          
            select
          
           * 
          
            from
          
           sys.indexes 
          
            where
          
           name = 
          
            'idx_uqe_clu_stu_name_age'
          
          ))
        
          
            drop
          
          
            index
          
           student.idx_uqe_clu_stu_name_age
        
          
            go
          
        
          
            create
          
          
            unique
          
          
            clustered
          
          
            index
          
           idx_uqe_clu_stu_name_age
        
          
            on
          
           student(name, age);
        
          ?
        
          
            if
          
           (
          
            exists
          
           (
          
            select
          
           * 
          
            from
          
           sys.indexes 
          
            where
          
           name = 
          
            'idx_cid'
          
          ))
        
          
            drop
          
          
            index
          
           student.idx_cid
        
          
            go
          
        
          ?
        
          
            if
          
           (
          
            exists
          
           (
          
            select
          
           * 
          
            from
          
           sys.indexes 
          
            where
          
           name = 
          
            'idx_cid'
          
          ))
        
          
            drop
          
          
            index
          
           student.idx_cid
        
          
            go
          
        
          ?
        
          --非聚集索引
        
          
            create
          
          
            nonclustered
          
          
            index
          
           idx_cid
        
          
            on
          
        
          student (cid)
        
          
            with
          
          
            fillFactor
          
           = 30;    --填充因子
        
          ?
        
          --聚集索引
        
          
            if
          
           (
          
            exists
          
           (
          
            select
          
           * 
          
            from
          
           sys.indexes 
          
            where
          
           name = 
          
            'idx_sex'
          
          ))
        
          
            drop
          
          
            index
          
           student.idx_sex
        
          
            go
          
        
          
            create
          
          
            clustered
          
          
            index
          
           idx_sex
        
          
            on
          
        
          student(sex);
        
          ?
        
          --聚集索引
        
          
            if
          
           (
          
            exists
          
           (
          
            select
          
           * 
          
            from
          
           sys.indexes 
          
            where
          
           name = 
          
            'idx_name'
          
          ))
        
          
            drop
          
          
            index
          
           student.idx_name
        
          
            go
          
        
          
            create
          
          
            unique
          
          
            index
          
           idx_name
        
          
            on
          
        
          student(name);
        

???

??? 4、 適合的創建索引的列

??????? 當數據庫的某一列被頻繁的用于數據庫查詢時,或者該列用于數據庫進行排序時可以創建成索引

?

??? 5、 不適合創建索引的列

??????? 如果列中有幾個不同的值,或者表中僅包含幾行值,則不推薦為其創建索引。因為索引在搜索數據所花的時間比在表中逐行搜索話的時間更長。

?

? 視圖

??? 1、 什么是視圖

??????? 視圖就是一個虛擬的數據表,該數據表中的數據記錄是有一條查詢語句的查詢結果得到的。

?

??? 2、 創建視圖準則

??????? 創建視圖需要考慮一下準則:

??? # 視圖名稱必須遵循標識符的規則,該名稱不得與該架構的如何表的名稱相同

??? # 你可以對其他視圖創建視圖。允許嵌套視圖,但嵌套不得超過32層。視圖最多可以有1024個字段

??? # 不能將規則和default定義于視圖相關聯

??? # 視圖的查詢不能包含compute子句、compute by子句或into關鍵字

??? # 定義視圖的查詢不能包含order by子句,除非在select 語句的選擇列表中還有top子句

???

??? 下列情況必須指定視圖中每列的名稱:

??? # 視圖中的如何列都是從算術表達式、內置函數或常量派生而來

??? # 視圖中有兩列或多列具有相同名稱(通常由于視圖定義包含聯接,因此來自兩個或多個不同的列具有相同的名稱)

??? # 希望視圖中的列指定一個與其原列不同的名稱(也可以在視圖中重命名列)。無論是否重命名,視圖列都回繼承原列的數據類型

?

??? 3、 創建視圖

          --創建視圖
        
          
            if
          
           (
          
            exists
          
           (
          
            select
          
           * 
          
            from
          
           sys.objects 
          
            where
          
           name = 
          
            'v_stu'
          
          ))
        
          
            drop
          
          
            view
          
           v_stu
        
          
            go
          
        
          
            create
          
          
            view
          
           v_stu
        
          
            as
          
        
          
            select
          
           id, name, age, sex 
          
            from
          
           student;
        

???

??? 4、 修改視圖

          
            alter
          
          
            view
          
           v_stu
        
          
            as
          
        
          
            select
          
           id, name, sex 
          
            from
          
           student;
        
          ?
        
          
            alter
          
          
            view
          
           v_stu(編號, 名稱, 性別)
        
          
            as
          
        
          
            select
          
           id, name, sex 
          
            from
          
           student
        
          
            go
          
        
          
            select
          
           * 
          
            from
          
           v_stu;
        
          ?
        
          
            select
          
           * 
          
            from
          
           information_schema.views;
        

???

??? 5、 加密視圖

?

?

?

          --加密視圖
        
          
            if
          
           (
          
            exists
          
           (
          
            select
          
           * 
          
            from
          
           sys.objects 
          
            where
          
           name = 
          
            'v_student_info'
          
          ))
        
          
            drop
          
          
            view
          
           v_student_info
        
          
            go
          
        
          
            create
          
          
            view
          
           v_student_info
        
          
            with
          
           encryption --加密
        
          
            as
          
        
          
            select
          
           id, name, age 
          
            from
          
           student
        
          
            go
          
        
          --view_definition 
          
            is
          
          
            null
          
        
          
            select
          
           * 
          
            from
          
           information_schema.views 
        
          
            where
          
           table_name 
          
            like
          
          
            'v_stu'
          
          ;
        

轉:SQL Server 索引和視圖


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲精品免费在线观看 | 国产精品一区久久久久 | 亚洲一区二区三区视频 | 美国av片在线观看 | 亚洲天堂免费看 | 激情综合网婷婷 | 亚洲性色成人 | 日韩欧美精品在线观看 | 欧美电影精品久久久久 | 久久久国产精品 | 久久99国产精品成人欧美 | 久草在线视频精品 | 久久97久久97精品免视看 | 国产69久久久欧美黑人A片 | 亚洲一区二区三 | 亚洲电影免费 | 精品一区二区三区四区五区六区 | 高清男女性高爱潮免费 | 97se亚洲综合在线韩国专区福利 | 欧美a视频 | 日韩一区二区在线视频 | 91视频h| 中文字幕 国产精品 | 日韩高清一区二区 | 成人av福利| 亚洲 中文 欧美 日韩 在线观看 | 精品久久久久区二区8888 | 激情 婷婷 | 国内精品一区二区2021在线 | 亚洲一二三四2021不卡 | 亚洲高清视频在线 | 国产免费观看视频 | 涩涩天堂 | 成人免费大片a毛片 | 97精品久久 | 精品一区视频 | 奇米影视8888 | 久久亚洲精品视频 | 成人国产精品一区 | 无码又黄又爽又舒服的A片 综合久久网 | 九九热精 |