索引视图

  -- -索引视图 索引视图是具体化的视图 -- 创建索引视图 create view 视图名 with schemabinding as select 语句 go -- -创建索引视图需要注意的几点 1 . 创建索引视图的时候需要指定表所属的架构 -- 错误写法 create view v_f with schemabinding as select a.a,a.b,b.a,b.b from a join b on a.id = b.id go -- -正确写法: create view v_f with schemabinding as select a.a,a.b,b.a,b.b from dbo.a join dbo.b on a.id = b.id go 2 .在创建索引视图的select语句时,不使用 * ,必须指定具体的列名 -- 错误写法 create view v_f with schemabinding as select * from dbo.a join dbo.b on a.id = b.id go -- -正确写法 create view v_f with schemabinding as select a.a,a.b,b.a,b.b from dbo.a join dbo.b on a.id = b.id go 3 .在创建索引视图的select 语句中,不能存在重复的列名,这个不举例了 4 . 只能为索引视图创建唯一聚集索引 -- 正确的写法 create unique clustered index ix_uniquetb on v_tb go -- 错误的写法 create clustered index ix_uniquetb on v_tb go -- -使用索引优化数据库查询效率 1 .不宜创建索引的情形( 1 )经常插入,修改和删除的表( 2 )数据量比较小的表,因为查询优化器在搜索索引时所花费的时间可能会大于遍历全表的数据所需要的时间 2 .适合创建索引的情形( 1 )为where子句中出现的列创建索引( 2 )创建组合索引( 3 )为group by 子句中出现的列创建索引 3 .聚集索引的设计原则( 1 )该列的数值是唯一的或者很少有重复的记录( 2 )经常使用between ... and ..按顺序查询的列( 3 )定义identity的唯一列.( 4 )经常用于对数据进行排序的列. -- -无法使用索引的select语句 1 .对索引列使用了函数,如: select * from tb where max (id) = 100 2 .对索引列使用了 ' %xx ' ,如: select * from tb where id like ' %1 ' 需要注意的不是所有使用like关键字的select 语句都无法使用索引,比如 select * from tb where id like ' 1% ' 就可以使用索引 3 .在where子句中对列进行类型转换(其实也是使用到了函数) 4 .在组合索引的第1列不是使用最多的列,如在下面3个查询语句中建立组合索引,按顺序包含col2,col1,id列; select * from tb where id = ' 1 ' and col1 = ' aa ' select id, sum (col1) from tb group by id select * from tb where id = ' 2 ' and col2 = ' bb ' 则第一句和第二句无法使用到索引 所以需要注意组合索引的顺序 5 .在where 子句中使用in关键字的某些句子当在in关键字后面使用嵌套的select语句,将无法使用在该列上定义的索引如: select * from ta where id in ( select id from tb where ....) -- 这样可以用到索引 select * from tb where id in ( ' 1 ' , ' 2 ' )
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值