第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

猜你喜欢

转载自blog.csdn.net/qq_43128070/article/details/82621228