SqlServer添加索引

1. 聚集索引(Clustered Index)

  • 描述:表数据按照索引顺序实际存储。
  • 适用场景:数据经常需要排序或范围查询,比如按日期排序的查询。
  • 优点
    • 提高排序和范围查询性能。
    • 一个表只能有一个聚集索引,但可以在多列上创建(复合索引)。
  • 缺点
    • 更新、插入和删除操作可能较慢,因为需要维护数据排序。

2. 非聚集索引(Non-Clustered Index)

  • 描述:存储在单独的结构中,包含指向数据行的指针。
  • 适用场景:查找特定值或少量结果的查询,如基于唯一键或外键的查询。
  • 优点
    • 可以有多个非聚集索引,提高查找特定数据的速度。
  • 缺点
    • 可能占用更多存储空间。
    • 复杂的查询可能需要访问索引和数据两次(索引查找和行查找)。

3. 唯一索引(Unique Index)

  • 描述:确保索引列中的值是唯一的,可以是聚集索引或非聚集索引。
  • 适用场景:需要确保数据唯一性的场景,如用户ID、身份证号等。
  • 优点
    • 保证数据唯一性。
    • 提高查询性能(同非聚集索引)。
  • 缺点
    • 插入和更新操作需要检查唯一性,可能稍慢。

4. 筛选索引(Filtered Index)

  • 描述:非聚集索引的一种,仅包含满足特定条件的行。
  • 适用场景:查询某些条件下的数据,如仅索引活跃用户。
  • 优点
    • 索引更小,查询更快。
    • 减少索引维护开销。
  • 缺点
    • 只适用于特定条件下的查询,不适用于全表扫描。

5. 全文索引(Full-Text Index)

  • 描述:用于大文本字段的全文搜索。
  • 适用场景:需要对大文本字段进行复杂搜索的场景,如博客搜索。
  • 优点
    • 提供高效的全文检索能力。
    • 支持自然语言查询。
  • 缺点
    • 占用较多存储空间。
    • 建立和维护成本较高。

6. 列存储索引(Columnstore Index)

  • 描述:适用于数据仓库,通过按列存储数据来提高压缩率和查询性能。
  • 适用场景:适用于数据仓库和分析场景,尤其是大规模数据处理。
  • 优点
    • 高压缩率。
    • 快速的聚合查询性能。
  • 缺点
    • 不适合频繁的DML操作(插入、更新、删除)。

总结

  1. 频繁排序或范围查询:选择聚集索引。
  2. 查找特定值的查询:选择非聚集索引。
  3. 确保唯一性和加速查找:选择唯一索引。
  4. 特定条件下的查询:选择筛选索引。
  5. 全文搜索:选择全文索引。
  6. 大规模数据分析:选择列存储索引。

如何使用:

唯一索引

CREATE UNIQUE NONCLUSTERED INDEX UQ_UserId ON  YX_USERS (UserId);

删除索引

DROP INDEX UQ_UserId ON YX_USERS;

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值