SQL Server查询性能优化——覆盖索引(一)
覆盖索引又可以称为索引覆盖。
解释一: 就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。
解释二: 索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引。
解释三: 是非聚集组合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列(即建立索引的字段正好是覆盖查询语句[select子句]与查询条件[Where子句]中所涉及的字段,也即,索引包含了查询正在查找的所有数据)。
键值字段控制了数据行的顺序。由于SQL SERVER以聚集索引的键值字段来排序数据行,所以当你经常需要对某些字段排序时,把这些要排序的字段作为聚
集索引的键值,创建聚集索引将对查询性能会有很大的提升。因为数据已经照聚集索引的键值字段的顺序排序,所以查询执行时不需要额外的排序操作。同时如果使
用聚集索引来查找同条记录的其他字段的数据,SQL SERVER也不需要额外地通过指针检索数据,因为在聚集索引找到索引键值的同时就已经找到整条数
据。
单编号字段建立的,相近的记录全部会摆放在一起,则访问的分页当然就比较少,通过聚集索引可快速定位包含起始销售订单编号的行,然后检索表中所有连续的
行,直到检索到最后的销售订单号。


存放在索引的子叶层级。覆盖索引不仅仅只包含你写在WHERE条件内的字段,而且还包含所有SELECT 需要的字段,以及在GROUP BY 或
ORDER BY 子句内的字段。
列无关的数据表其他字段添加到非聚集索引的子叶层,扩展非聚集索引的功能,但这些字段值不做排序等额外的维护动作。在查询时仅读取索引结构就可得到所有相
关的数据,不访问表或聚集索引的数据,从而减少磁盘 I/O 操作,减少读取数据表本身所花的资源。SQL SERVER 的组合索引最多只能有16个字
段,而这些添加到索引子叶层中的相关字段并不计算在这16个字段中。
适用的组合索引。或是当查询语句没有WHERE条件,但组合索引覆盖了所有需要的字段时,则直接扫描索引的子叶层获取数据而不是通过扫描数据表查找数据。
含数据表内所有WBOOK_NO与[QTY_1],[COP_G_NO],[G_NO],[CODE_T],[UNIT_1],
[TRADE_TOTAL],[GROSS_WT]字段内容的子叶层。如下图。

如果非聚集索引页中包括了查询语句中所需要的数据列(COP_G_NO,G_NO, UNIT_1)的值,SQL Server引擎可能不会执行上面的第3和4步,直接从非聚集索引中查找[COP_G_NO]列速度还会快一些,直接从索引的子叶层读取这三列的数值。
SQL Server查询性能优化——覆盖索引(一)的更多相关文章
- SQL Server查询性能优化——覆盖索引(二)
在SQL Server 查询性能优化——覆盖索引(一)中讲了覆盖索引的一些理论. 本文将具体讲一下使用不同索引对查询性能的影响. 下面通过实例,来查看不同的索引结构,如聚集索引.非聚集索引.组合索引等 ...
- SQL Server 查询性能优化——覆盖索引
覆盖索引又可以称为索引覆盖. 解释一: 就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖. 解释二: 索引是高效找到行的一个方法,当能通过检索索引 ...
- SQL Server查询性能优化——创建索引原则(一)
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页 就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索 ...
- SQL Server 查询性能优化——创建索引原则(一)(转载)
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...
- SQL Server 查询性能优化——创建索引原则(一)
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...
- SQL Server 查询性能优化——创建索引原则
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...
- SQL Server 查询性能优化——创建索引原则(二)
三:索引的建立原则 一般来说,建立索引要看数据使用的场景,换句话来说哪些访问数据的SQL语句是常用的,而这些语句是否因为缺少索引(也有可能是索引过多)变的效率低下.但绝不是所有的SQL语句都要建立索引 ...
- SQL SERVER 查询性能优化——分析事务与锁(五)
SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...
- SQL Server 查询性能优化 相关文章
来自: SQL Server 查询性能优化——堆表.碎片与索引(一) SQL Server 查询性能优化——堆表.碎片与索引(二) SQL Server 查询性能优化——覆盖索引(一) SQL Ser ...
随机推荐
- windows的路由例子
一.不同网卡不同网关 wlan:192.168.100.1/24 wifi:192.168.8.1/24 1.如果想要特定的ip访问wifi网络 可以用 route add 1.2.3.4 mask ...
- .NET研发人员面试题(一)
1.简述javascript中的“=.==.===”的区别? =赋值 ==比较是否一般相等 "3"==3 //会做类型的隐式转换,true ===比较是否严格相等 " ...
- php中utf8 与utf-8 与utf8 无BOM
utf8 与utf-8 相信很多程序员刚开始也会有这样的疑惑,如题,我也是. 其实,他们可以这样来区分. 一.在php和html中设置编码,请尽量统一写成“UTF-8”,这才是标准写法,而 ...
- R中逻辑运算
一.是否相等的判断的方法 (1)判断字符串是否相等is.null(x) (2)判断x的每个元素是否在y中出现: x %in% y (3)判断判断每个相对应的元素是否相等: x == y (4)判断近似 ...
- Java应用程序可执行jar文件与服务器交互中文乱码
生成可执行jar文件后,直接双击打开应用,发送Http请求带有中文时,服务器接收到的中文乱码! 解决方式: 1.在cmd命令中执行javaw命令打开jar可执行应用: 打开cmd命令框,输入: jav ...
- linux下定时发送邮件
at命令可以在某个时间运行某个程序,而mail可以以命令行的方式把存于一个文本中的邮件正文发送抄送出去. 具体用法: 1. 把email正文准备好,比如写在email.txt里 2. 然后写一个脚 ...
- 浏览器打开应用指定的界面-b
iOS中提供了两种在浏览器中打开APP的方法: Smart App Banner 和schema协议,这里介绍schema 在实际开发中我们可能会在浏览器中唤醒我们自己的app,就像手机QQ唤醒快报一 ...
- bool([x]) 将x转换为Boolean类型
>>> a = 1 >>> b = 0 >>> c = "None" >>> d = bool(a) > ...
- 分别取商和余数:divmod(a, b)
使用函数:divmod(a, b)可以实现分别取商和余数的操作: >>> divmod(123,3) (41, 0) >>> divmod(200,6) (33, ...
- sjtu1585 oil
Description Crystal家的公司最近承包了一个大油田.整块油田为一个矩形区域,被划分为\(n \times m\)个小块. Crystal亲自调查了每个小块的石油储备量.这些数据表示为\ ...