SQL Server技术问题之索引优缺点
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
优点:
正确的索引会大大提高数据查询、对结果排序、分组的操作效率。
缺点:
1、存储空间,每个索引都要空间存储
2、如果非聚集索引很多,一旦聚集索引改变,那么所有非聚集索引都会跟着变。
3、过多索引会导致优化器优化过程需要评估的组合增多。
4、每个索引都有统计信息,索引越多统计信息越多。
5、更新开销,一旦一个数据改变,并且改变的列比较多,可能会引起好几个索引跟着改变。
分类:
聚集索引>>聚集索引基于数据行的键值,在表内排序和存储这些数据行。每个表只能有一个聚集索引,应为数据行本分只能按一个顺序存储。
在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。聚集索引通常可加快UPDATE和DELETE操作的速度,因为这两个操作需要读取大量的数据。创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。
非聚集索引>>因为一个表中只能有一个聚集索引,如果需要在表中建立多个索引,则可以创建为非聚集索引。表中的数据并不按照非聚集索引列的顺序存储,但非聚集索引的索引行中保存了非聚集键值和行定位器,可以快捷地根据非聚集键的值来定位记录的存储位置。
非聚集索引,本质上来说也是聚集索引的一种.非聚集索引并不改变其所在表的物理结构,而是额外生成一个聚集索引的B树结构,但叶子节点是对于其所在表的引用,这个引用分为两种,如果其所在表上没有聚集索引,则引用行号。如果其所在表上已经有了聚集索引,则引用聚集索引的页.
使用原则:
1:不要索引数据量不大的表,对于小表来讲,表扫描的成本并不高。
2:不要设置过多的索引,在没有聚集索引的表中,最大可以设置249个非聚集索引,过多的索引首先会带来更大的磁盘空间,而且在数据发生修改时,对索引的维护是特别消耗性能的。
3:合理应用复合索引,有某些情况下可以考虑创建包含所有输出列的覆盖索引。
4:对经常使用范围查询的字段,可能考虑聚集索引。
5:避免对不常用的列,逻辑性列,大字段列创建索引。
SQL Server技术问题之索引优缺点相关推荐
- SQL Server技术问题之视图优缺点
优点: 一.简单性.视图不仅可以简化用户对数据的理解,也可以简化他们的操作.那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件. 二.安全性.通过视图用户只能查询和修 ...
- oracle数据库索引介绍,SQL Server和Oracle数据库索引介绍
SQL Server和Oracle数据库索引介绍 SQL Server 和 Oracle 数据库索引介绍1 SQL Server 中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行 ...
- SQL Server强制使用特定索引 、并行度、锁
SQL Server强制使用特定索引 .并行度 修改或删除数据前先备份,先备份,先备份(重要事情说三遍) 很多时候你或许为了测试.或许为了规避并发给你SQL带来的一些问题,常常需要强制指定目标sql选 ...
- 【SQL Server】性能优化-索引
性能优化-索引 1 索引 1.1 什么是索引 1.2 索引的存储机制 1.3 创建索引原则 1.4 如何创建索引 1.4.1 创建索引 1.4.1 删除索引 1.4.1 显示索引 1.5 索引使用次数 ...
- Sql Server 创建唯一聚集索引典型实现
创建唯一聚集索引典型实现 唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动 ...
- SQL Server中的聚集索引与堆
摘要 (Summary) There are few topics so widely misunderstood and that generates such frequent bad advic ...
- SQL Server将主键索引,改为非聚集索引
一.创建索引 1.聚集索引 --给'表名'的'列名'添加一个名叫'索引名称'的聚集索引 create clustered index 索引名称 on 表名(列名) 2.非聚集索引 --给'表名'的'列 ...
- SQL Server 重新组织生成索引
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引/统计信息 概述 无论何时对基础数据执行插入.更新或删除操作,SQL Server 数据库引擎都会自动维护索引.随着时间的推移 ...
- SQL Server 创建和使用索引 (转载)
创建索引: (1)在SQL Server Management Studio中,选择并右击要创建索引的表,从弹出菜单中选择"设计",打开表设计器.右键单击表设计器,从弹出菜单中选择 ...
最新文章
- CentOS 安装docker.ce报错提示containerd.io >= 1.2.2-3问题
- Beta 冲刺 (7/7)
- php7.1函数,PHP7.1常用新特性和函数
- ajax post 传参数加引号和不加引号的区别
- Android开发中关于Fragments的内涵
- 扎心!全国6.5亿网民月收入不足5000元
- ElasticSearch通过Scroll方式遍历索引(Python代码)
- Codeforces - 1191D - Tokitsukaze, CSL and Stone Game - 博弈论
- 网赚项目活动线报监控提醒
- 希尔伯特变换分析及应用
- sobol灵敏度分析matlab_灵敏度分析 使用MATLAB编写
- 【Tool】ELF 和 AXF 文件分析详解
- 步进电机控制和步进电机原理
- SDS启动失败,提示连接primary节点失败
- 微服务实战之高可用性
- CleanMyMac X2023最新版安装图文详解
- 数据分析专题报告范文6篇_【2018最新】数据分析报告范文-优秀word范文 (5页)
- 加法链POJ2248
- C语言学习之认识exit()函数
- 在Windows服务器上搭建Nuget私人服务器(超~详细)