索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

优点:

  正确的索引会大大提高数据查询、对结果排序、分组的操作效率。

缺点:

1、存储空间,每个索引都要空间存储
2、如果非聚集索引很多,一旦聚集索引改变,那么所有非聚集索引都会跟着变。
3、过多索引会导致优化器优化过程需要评估的组合增多。
4、每个索引都有统计信息,索引越多统计信息越多。
5、更新开销,一旦一个数据改变,并且改变的列比较多,可能会引起好几个索引跟着改变。

分类:

聚集索引>>聚集索引基于数据行的键值,在表内排序和存储这些数据行。每个表只能有一个聚集索引,应为数据行本分只能按一个顺序存储。

  在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。聚集索引通常可加快UPDATE和DELETE操作的速度,因为这两个操作需要读取大量的数据。创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。

非聚集索引>>因为一个表中只能有一个聚集索引,如果需要在表中建立多个索引,则可以创建为非聚集索引。表中的数据并不按照非聚集索引列的顺序存储,但非聚集索引的索引行中保存了非聚集键值和行定位器,可以快捷地根据非聚集键的值来定位记录的存储位置。

  非聚集索引,本质上来说也是聚集索引的一种.非聚集索引并不改变其所在表的物理结构,而是额外生成一个聚集索引的B树结构,但叶子节点是对于其所在表的引用,这个引用分为两种,如果其所在表上没有聚集索引,则引用行号。如果其所在表上已经有了聚集索引,则引用聚集索引的页.

使用原则:
1:不要索引数据量不大的表,对于小表来讲,表扫描的成本并不高。
2:不要设置过多的索引,在没有聚集索引的表中,最大可以设置249个非聚集索引,过多的索引首先会带来更大的磁盘空间,而且在数据发生修改时,对索引的维护是特别消耗性能的。
3:合理应用复合索引,有某些情况下可以考虑创建包含所有输出列的覆盖索引。
4:对经常使用范围查询的字段,可能考虑聚集索引。
5:避免对不常用的列,逻辑性列,大字段列创建索引。

SQL Server技术问题之索引优缺点相关推荐

  1. SQL Server技术问题之视图优缺点

    优点: 一.简单性.视图不仅可以简化用户对数据的理解,也可以简化他们的操作.那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件. 二.安全性.通过视图用户只能查询和修 ...

  2. oracle数据库索引介绍,SQL Server和Oracle数据库索引介绍

    SQL Server和Oracle数据库索引介绍 SQL Server 和 Oracle 数据库索引介绍1 SQL Server 中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行 ...

  3. SQL Server强制使用特定索引 、并行度、锁

    SQL Server强制使用特定索引 .并行度 修改或删除数据前先备份,先备份,先备份(重要事情说三遍) 很多时候你或许为了测试.或许为了规避并发给你SQL带来的一些问题,常常需要强制指定目标sql选 ...

  4. 【SQL Server】性能优化-索引

    性能优化-索引 1 索引 1.1 什么是索引 1.2 索引的存储机制 1.3 创建索引原则 1.4 如何创建索引 1.4.1 创建索引 1.4.1 删除索引 1.4.1 显示索引 1.5 索引使用次数 ...

  5. Sql Server 创建唯一聚集索引典型实现

    创建唯一聚集索引典型实现 唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动 ...

  6. SQL Server中的聚集索引与堆

    摘要 (Summary) There are few topics so widely misunderstood and that generates such frequent bad advic ...

  7. SQL Server将主键索引,改为非聚集索引

    一.创建索引 1.聚集索引 --给'表名'的'列名'添加一个名叫'索引名称'的聚集索引 create clustered index 索引名称 on 表名(列名) 2.非聚集索引 --给'表名'的'列 ...

  8. SQL Server 重新组织生成索引

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引/统计信息 概述 无论何时对基础数据执行插入.更新或删除操作,SQL Server 数据库引擎都会自动维护索引.随着时间的推移 ...

  9. SQL Server 创建和使用索引 (转载)

    创建索引: (1)在SQL Server Management Studio中,选择并右击要创建索引的表,从弹出菜单中选择"设计",打开表设计器.右键单击表设计器,从弹出菜单中选择 ...

最新文章

  1. CentOS 安装docker.ce报错提示containerd.io >= 1.2.2-3问题
  2. Beta 冲刺 (7/7)
  3. php7.1函数,PHP7.1常用新特性和函数
  4. ajax post 传参数加引号和不加引号的区别
  5. Android开发中关于Fragments的内涵
  6. 扎心!全国6.5亿网民月收入不足5000元
  7. ElasticSearch通过Scroll方式遍历索引(Python代码)
  8. Codeforces - 1191D - Tokitsukaze, CSL and Stone Game - 博弈论
  9. 网赚项目活动线报监控提醒
  10. 希尔伯特变换分析及应用
  11. sobol灵敏度分析matlab_灵敏度分析 使用MATLAB编写
  12. 【Tool】ELF 和 AXF 文件分析详解
  13. 步进电机控制和步进电机原理
  14. SDS启动失败,提示连接primary节点失败
  15. 微服务实战之高可用性
  16. CleanMyMac X2023最新版安装图文详解
  17. 数据分析专题报告范文6篇_【2018最新】数据分析报告范文-优秀word范文 (5页)
  18. 加法链POJ2248
  19. C语言学习之认识exit()函数
  20. 在Windows服务器上搭建Nuget私人服务器(超~详细)

热门文章

  1. JavaScript对象的几种创建方式?
  2. mysql 创建用户远程连接
  3. 构造函数与析构函数到底做了啥?
  4. MySQL EXPLAIN Extra列的信息
  5. VMware View 5.2 安装实施七 安装Web Client
  6. C语言实现一种简单的应用服务器内部数据结构的思路(三)
  7. ns 25的L2TP模式×××配置
  8. 应不应该使用inline-block代替float
  9. 最新的SqlHelper 类
  10. 好大一盘棋:谷歌光纤再下一城