导读:数据数优化查询一直是个比较热门的话题,小生在这方面也只能算是个入门生。今

天我们就讲下数据库包含列这个一项的作用及带来的优化效果

引用下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_PostalCode
ON Person.Address (PostalCode)
INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);
GO

Sql Server 性能优化之包含列的更多相关文章

  1. 【SQL Server性能优化】运用SQL Server的全文检索来提高模糊匹配的效率

    原文:[SQL Server性能优化]运用SQL Server的全文检索来提高模糊匹配的效率 今天去面试,这个公司的业务需要模糊查询数据,之前他们通过mongodb来存储数据,但他们说会有丢数据的问题 ...

  2. SQL Server 性能优化之——系统化方法提高性能

    SQL Server 性能优化之——系统化方法提高性能 阅读导航 1. 概述 2. 规范逻辑数据库设计 3. 使用高效索引设计 4. 使用高效的查询设计 5. 使用技术分析低性能 6. 总结 1. 概 ...

  3. SQL Server性能优化(6)查询语句建议

    1. 如果对数据不是工业级的访问(允许脏读),在select里添加 with(nolock) ID FROM Measure_heat WITH (nolock) 2. 限制结果集的数据量,如使用TO ...

  4. SQL SERVER性能优化综述

    SQL SERVER性能优化综述 一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的.所以我希望按照软 ...

  5. SQL Server 性能优化之RML Utilities:快速入门(Quick Start)(1)

      SQL Server 性能优化之RML Utilities:快速入门(Quick Start)(1) 安装Quick Start工具 RML(Replay Markup Language)是MS ...

  6. SQL Server 性能优化(一)——简介

    原文:SQL Server 性能优化(一)--简介 一.性能优化的理由: 听起来有点多余,但是还是详细说一下: 1.节省成本:这里的成本不一定是钱,但是基本上可以变相认为是节省钱.性能上去了,本来要投 ...

  7. SQL Server性能优化与管理的艺术 附件下载地址

    首先感谢读者们对鄙人的支持,购买了<SQL Server性能优化与管理的艺术>,由于之前出版社的一些疏忽,附件没有上传成功,再次本人深表歉意. 请需要下载附件的读者从下面链接下载,谢谢: ...

  8. 【SQL Server性能优化】删除大量数据的方法比较

    原文:[SQL Server性能优化]删除大量数据的方法比较 如果你要删除表中的大量数据,这个大量一般是指删除大于10%的记录,那么如何删除,效率才会比较高呢? 而如何删除才会对系统的影响相对较小呢? ...

  9. SQL Server 性能优化详解

    故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户, ...

随机推荐

  1. 一道常被人轻视的前端JS面试题(转)

    分享下我曾经出过的一道面试题,此题是我出的一套前端面试题中的最后一题,用来考核面试者的JavaScript的综合能力,很可惜到目前为止的将近两年中,几乎没有人能够完全答对,并非多难只是因为大多面试者过 ...

  2. 使用Adobe Edge Inspect在各种设备中轻松测试同一页面

    有过移动网站开发经历的开发者都知道,在各种设备中测试同一页面是一项非常繁琐的工作.现在,我们可以使用Adobe Edge Inspect来简化这一工作.如果使用Edge Inspect,可以在各种设备 ...

  3. ACM 国王的魔镜

    国王的魔镜 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的. 比如一 ...

  4. 洛谷 P1462 通往奥格瑞玛的道路 Label: 最小化最大值 && spfa (存多条边示例)

    题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...

  5. 【搬运工】NOIP吧置顶贴

    目的是存置顶贴里的链接.. 原帖:http://tieba.baidu.com/p/1753284199 资源站:*C++资源:http://tieba.baidu.com/p/1239792581* ...

  6. 在Javascript中监听flash事件(转)

    在Javascript中监听flash事件,其实有两种做法: 1.在特定的环境下(例如专门制作的flash),大家约定一个全局函数,然后在flash的事件中用ExternalInterface.cal ...

  7. 浅析-博客Ping服务

    简介:PING服务是博客站点向博客目标网站.搜索引擎等发出的博客内容更新通知服务,然后博客目标网站.搜索引擎就会及时的索引.收录以及传播您的博客内容. PING原理 PING 服务是博客站点向博客目标 ...

  8. [CareerCup] 17.3 Factorial Trailing Zeros 求阶乘末尾零的个数

    LeetCode上的原题,讲解请参见我之前的博客Factorial Trailing Zeroes. 解法一: int trailing_zeros(int n) { ; while (n) { re ...

  9. 关闭CentOS不必要的开机启动项

    命令行: for i in `chkconfig --list |grep 3:on|awk '{print $1}' |grep -Ev "network|sshd|sysstat|ude ...

  10. mztree使用示例

    mztree使用:http://www.myexception.cn/open-source/1014169.html jquery的treeview使用:http://www.cnblogs.com ...