sql server 创建唯一性非聚集索引语句_跟飞哥学编程:SQL入门-6-索引(二)

v2-1c4d7ae8d22f98e4bdeec43cc4769585_1440w.jpg?source=172ae18b

自动建立的索引

除了显式地(使用CREATE INDEX的SQL语句)建立索引以外,SQL Server还在我们进行以下操作时为我们自动建立索引:

  • 设立唯一(UNIQUE)约束:会自动创建一个唯一非聚集索引。唯一约束,就是需要在插入数据时进行唯一检查,那怎么检查呢?不可能使用全表扫描吧?只能通过唯一索引来快速查找。所以,唯一约束本质上是依赖唯一索引的。
    此外,删除唯一约束也会同时删除该约束所依赖的唯一索引。
  • 设立主键(PRIMARY KEY)约束:
  1. 如果表上还没有建立聚集索引,会自动创建一个聚集唯一索引
  2. 如果表上已经有了聚集索引,会自动创建一个聚集唯一索引

所以要注意,如果面试官问你:主键就是唯一聚集索引吗?你正确的回答是:不一定……

以上SQL Server自动创建的索引,在SQL Server Object Explore中不会显示,我们需要在系统视图(视图的概念后文详述)sys.indexes中查看:

-- [type]:1 聚集; >1 非聚集

演示:

@试一试@:

  • 新建一个UNIQUE约束,会不会利用已有的UNIQUE索引
  • 删除一个UNIQUE约束依赖的UNIQUE索引,会有什么结果?

合理规划索引

使用索引的目的是为了提高查询的性能。

但是,我们首先要知道使用索引的代价。事实上,天下没有免费的午餐,凡事皆有代价!这是我们在做性能优化的时候尤其要牢记的一点(尤其是“性能控”的同学)。具体来说,索引会:

  1. 占用更多的磁盘空间。
  2. 在对数据进行增删改操作时更慢。因为在进行这些操作的同时还要进行索引的维护。

所以,我们在建立索引时应综合考虑以下因素,以确定在某列上有无必要建立索引:

  1. 表是经常被读(取),还是被写(入)。大多数时候,表的读取操作远大于写入操作(增删改),所以索引的存在是可取的;但是,某些特殊的表,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值