Sql Server 性能优化之包含列
导读:数据数优化查询一直是个比较热门的话题,小生在这方面也只能算是个入门生。今
天我们就讲下数据库包含列这个一项的作用及带来的优化效果
引用下MSDN里面的一段解释:
当查询中的所有列都作为键列或非键列包含在索引中时,带有包含性非键列的索引可以显
著提高查询性能。 这样可以实现性能提升,因为查询优化器可以在索引中找到所有列值;不
访问表或聚集索引数据,从而减少磁盘 I/O 操作
上面这一段什么意思呢?
意思就是说设置好包含列,能提高查询性能,减少IO输出。
这样说大家都觉得很抽象,下面我们举个例子来说明这个包含列的效果,
如何创建包含列索引?
1、 在对象资源管理器中,单击加号以便展开包含您要创建带有非键列的索引的表的数据库。
2、 单击加号以便展开“表”文件夹。
3、单击加号以便展开您要创建带有非键列的索引的表。
4、右键单击“索引”文件夹,指向“新建索引”,然后选择“非聚集索引…”。
5、 在“新建索引”对话框的“常规”页中,在“索引名称”框中输入新索引的名称。
6、 在“索引键列”选项卡下,单击“添加…”。
7、在“从 table_name 中选择列”对话框中,选中要添加到索引的一个或多个表列的复选框。
8、 单击“确定”。
9、 在“包含性列”选项卡下,单击“添加…”。
10、 在“从 table_name 中选择列”对话框中,选中要作为非键列添加到索引的一个或多个表列的复选框。
11、 单击“确定”。
12、 在“新建列”对话框中,单击“确定”。
举个例子来说明这个包含列的效果
SQL:select Sex from User Where UserName='小三'
我们来看下上面的语句 根据UserName来查询小三的性别,加入我们表中没有建任何索引,如果数据比较少的话 这个查询语句是没有任何问题的,但是当我们的用户量到达上千万时,这个查询可能就没当初那么快了,这个时候怎么提高查询效率呢?
建立非聚集索引
第一个方法:给UserName建立非聚集索引,建立了索引之后数据库就能更快的找到这条数据所存在的位置。
建立索引包含列
第二个方法:在给UserName建立非聚集索引的同时,建议包含列,包含Sex这一列,这样在快速定位UserName的同时又能很快定位出Sex的物理位置。包含列是对查询条件后的一种性能补充。
适用场景:该条查询用的非常频繁。select age from User Where UserName='小三'
比如在查询UserName的同时查询age非常多 就可以考虑给UserName建立非聚集索引的时候包含age这一列。
附上:建立包含列的SQL语句
|
1
2
3
4
5
6
7
8
9
|
USE AdventureWorks2012;GO-- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns. -- index key column is PostalCode and the nonkey columns are-- AddressLine1, AddressLine2, City, and StateProvinceID.CREATE NONCLUSTERED INDEX IX_Address_PostalCodeON Person.Address (PostalCode)INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);GO |
Sql Server 性能优化之包含列的更多相关文章
- 【SQL Server性能优化】运用SQL Server的全文检索来提高模糊匹配的效率
原文:[SQL Server性能优化]运用SQL Server的全文检索来提高模糊匹配的效率 今天去面试,这个公司的业务需要模糊查询数据,之前他们通过mongodb来存储数据,但他们说会有丢数据的问题 ...
- SQL Server 性能优化之——系统化方法提高性能
SQL Server 性能优化之——系统化方法提高性能 阅读导航 1. 概述 2. 规范逻辑数据库设计 3. 使用高效索引设计 4. 使用高效的查询设计 5. 使用技术分析低性能 6. 总结 1. 概 ...
- SQL Server性能优化(6)查询语句建议
1. 如果对数据不是工业级的访问(允许脏读),在select里添加 with(nolock) ID FROM Measure_heat WITH (nolock) 2. 限制结果集的数据量,如使用TO ...
- SQL SERVER性能优化综述
SQL SERVER性能优化综述 一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的.所以我希望按照软 ...
- SQL Server 性能优化之RML Utilities:快速入门(Quick Start)(1)
SQL Server 性能优化之RML Utilities:快速入门(Quick Start)(1) 安装Quick Start工具 RML(Replay Markup Language)是MS ...
- SQL Server 性能优化(一)——简介
原文:SQL Server 性能优化(一)--简介 一.性能优化的理由: 听起来有点多余,但是还是详细说一下: 1.节省成本:这里的成本不一定是钱,但是基本上可以变相认为是节省钱.性能上去了,本来要投 ...
- SQL Server性能优化与管理的艺术 附件下载地址
首先感谢读者们对鄙人的支持,购买了<SQL Server性能优化与管理的艺术>,由于之前出版社的一些疏忽,附件没有上传成功,再次本人深表歉意. 请需要下载附件的读者从下面链接下载,谢谢: ...
- 【SQL Server性能优化】删除大量数据的方法比较
原文:[SQL Server性能优化]删除大量数据的方法比较 如果你要删除表中的大量数据,这个大量一般是指删除大于10%的记录,那么如何删除,效率才会比较高呢? 而如何删除才会对系统的影响相对较小呢? ...
- SQL Server 性能优化详解
故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户, ...
随机推荐
- NODEJS-fs模块操作文件系统
1. 使用 fs模块 对文件/目录进行操作 2. 使用 path模块 对路径进行操作 使用 fs模块 对文件/目录进行操作 读取文件内容 // fs.readFile(filename, [optio ...
- jq prepend() 方法在被选元素的开头(仍位于内部)插入指定内容。 提示:prepend() 和 prependTo() 方法作用相同。差异在于语法:内容和选择器的位置,以及 prependTo() 无法使用函数来插入内容。
<html><head><script type="text/javascript" src="/jquery/jquery.js" ...
- Android LocalBroadcastManager 与 BroadcastReceiver
Android中BroadcastReceiver主要用途有 发送通知,更新UI或者数据,应用程序间相互通信,监听系统状态(比如开机,网络等) Android中发送广播的方式: 普通广播:无论优先级大 ...
- Android 大位图加载
说明:没对图片进行缓存处理,只是使用软引用进行位图资源的释放,从而避免内存泄漏. 对位图进行解码显示: public Bitmap decodeBitmap(Resources resources, ...
- ACM:POJ 2739 Sum of Consecutive Prime Numbers-素数打表-尺取法
POJ 2739 Sum of Consecutive Prime Numbers Time Limit:1000MS Memory Limit:65536KB 64bit IO Fo ...
- 读书笔记:javascript高级技巧(二)
四.惰性载入函数 因为浏览器兼容的原因,我们的javascript代码会有大量的if语句,将执行引导到正确的代码中,看如下函数: function createXHR(){ if (typeof XM ...
- 主席树+启发式合并(LT) BZOJ3123
好久没做题了,写道SBT又RE又T 查询:主席树裸题. 修改:对于两个树合并重建小的树. 注意fa[x][i]重新计算时要清空 #include<cstdio> #include<c ...
- 升级WebService图形服务,将K10.2和K10.3写到一个类库,所有服务放在一个类库
问题描述: 平时负责电子政务和图形调用部分,凡是牵涉到图形的都需要调用WebService服务,因此很多工程都需要添加web服务引用,现在WebForm的工程一个是10.2版本,一个是10.3版本,区 ...
- strcat、strcpy、memcpy 的使用注意
char *p = "hello";//5 个长度 ; //char *str = (char *)malloc(sizeof(char)*len); ] = "niha ...
- OCR磁盘的导出和导入、备份和恢复以及移动(ocrconfig命令的应用)
数据库版本:10.2.0.1 一,使用导出.导入进行备份和恢复 Oracle推荐在对集群做调整时,比如增加.删除节点之前,应该对OCR做一个备份,可以使用export 备份到指定文件.如果做了repl ...