- 12
- 0
- 约7.42万字
- 约 78页
- 2019-01-10 发布于四川
- 举报
SQLServer语句优化
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
我们把这种 正文内容 本身就是一种按照一定规则排列 的 目录 称为“聚集索引”。
需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。我们把这种目录纯粹是目录,正文纯粹是正文的 排序方式 称为“非聚集索引”。
下面的表总结了何时使用聚集索引或非聚集索引(很重要):
动作描述 使用聚集索引 使用非聚集索引
列经常被分组排序 应 应
返回某范围内的数据 应 不应
一个或极少不同值 不应 不应
小数目的不同值 应 不应
大数目的不同值 不应 应
频繁更新的列 不应 应
外键列 应 应
主键列 应 应
频繁修改索引列 不应 应
事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解上表。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1
结合实际,谈索引使用的误区
理论的目的是应用。虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析。下面我们将根据在实践中遇到的实际问题来谈一下索引使用的误区,以便于大家掌握索引建立的方法。
1、主键就是聚集索引
这种想法笔者认为是极端错误的,是对聚集索引的一种浪费。虽然SQL SERVER默认是在主键上建立聚集索引的。
通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1。我们的这个办公自动化的实例中的列Gid就是如此。此时,如果我们将这个列设为主键,SQL SERVER会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在数据库中按照ID进行物理排序,但笔者认为这样做意义不大。
显而易见,聚集索引的优势是很明显的,而每个表中只能有一个聚集索引的规则,这使得聚集索引变得更加珍贵。
从我们前面谈到的聚集索引的定义我们可以看出,使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。在实际应用中,因为ID号是自动生成的,我们并不知道每条记录的ID号,所以我们很难在实践中用ID号来进行查询。这就使让ID号这个主键作为聚集索引成为一种资源浪费。其次,让每个ID号都不同的字段作为聚集索引也不符合“大数目的不同值情况下不应建立聚合索引”规则;当然,这种情况只是针对用户经常修改记录内容,特别是索引项的时候会负作用,但对于查询速度并没有影响。
在办公自动化系统中,无论是系统首页显示的需要用户签收的文件、会议还是用户进行文件查询等任何情况下进行数据查询都离不开字段的是“日期”还有用户本身的“用户名”。
通常,办公自动化的首页会显示每个用户尚未签收的文件或会议。虽然我们的where语句可以仅仅限制当前用户尚未签收的情况,但如果您的系统已建立了很长时间,并且数据量很大,那么,每次每个用户打开首页的时候都进行一次全表扫描,这样做意义是不大的,绝大多数的用户1个月前的文件都已经浏览过了,这样做只能徒增数据库的开销而已。事实上,我们完全可以让用户打开系统首页时,数据库仅仅查询这个用户近3个月来未阅览的文件,通过“日期”这个字段来限制表扫描,提高查询速度。如果您的办公自动化系统已经建立的2年,那么您的首页显示速度理论上将是原来速度8倍,甚至更快。
在这里之所以提到“理论上”三字,是因为如果您的聚集索引还是盲目地建在ID这个主键上时,您的查询速度是没有这么高的,即使您在“日期”这个字段上建立的索引(非聚合索引)。下面我们就来看一下在1000万条数据量的情况下各种查询的速度表现(3个月内的数据为25万条):
(1)仅在主键上建立聚集索引,并且不划分时间段:
Select gid,fariqi,neibuyonghu,title from tgongwen
用时:128470毫秒(即:128秒)
(2)在主键上建立聚集索引,在fariq上建立非聚集索引:
select gid,fariqi,neibuyonghu,title from Tgongwen
where fariqi dateadd(day,-90,getdate())
用时:53763毫秒(54秒)
(3)将聚合索引建立在日期列(fariqi)上:
select gid,fariqi,neibuyonghu,title from Tgongwen
where fariqi dateadd(day,-90,getdate())
您可能关注的文档
- sql_ox详解(精编)电子书.pdf
- SQL_SERVER_2005之9索引和查询优化.ppt
- SQL+Server+2008实战详解(精编).pdf
- SQL24小时自学手册.pdf
- SQL-SERVER-2008R2中文安装与网络配置图文教程(win7).docx
- sqlserver-SQL触发器的使用及语法.docx
- SQLSERVER存储过程大总结.doc
- SQLServer对于内存的管理.pdf
- SqlServer教材-基础学习(基础篇).ppt
- sqlserver跨服务器触发器的写法.doc
- 招商银行2026届校园招聘备考试题及答案详解1套.docx
- 广安市中医医院 2026 招聘启动备考试题及参考答案详解一套.docx
- 绵阳科创投公司关于面向社会公开招聘战略投资部副部长等岗位的备考试题及参考答案详解一套.docx
- 四川省革命伤残军人休养院(四川省第一退役 军人医院)2026年招聘第一批高层次人才备考试题及完整答案.docx
- 苏家坨镇第二社区卫生服务中心招聘15人备考试题及参考答案详解1套.docx
- 浙江国企招聘-2026杭州富阳水务有限公司招聘4人备考试题及参考答案详解.docx
- 浙江嘉兴市桐乡市教育系统面向优秀毕业生招聘2026学年教师76人(第一批)(桐乡专场)备考试题及完整.docx
- 吉安市市直公立医院2026年校园招聘【28人】备考试题及参考答案详解.docx
- 宁波银行2026届校园招聘备考试题及参考答案详解1套.docx
- 平安银行26届春招及27届暑期实习生招聘备考试题及参考答案详解1套.docx
最近下载
- 建筑施工安全生产事故隐患内部报告奖励制度及台账.pdf VIP
- 人为因素和航空法规第01章绪论1.1航空人为因素对航空安全.pptx VIP
- 《人工智能发展前沿》 何友教材 ppt课件 第9章 脑启发人工智能.pptx VIP
- 23.《设计水火箭》教学课件 青岛版科学六年级上册.pptx
- 屠宰厂生产废水处理设计计算说明书.doc VIP
- 国标给排水专业图集 - 07MS101-2室外给水管道附属构筑物.pdf VIP
- 2023年浙江横店影视职业学院单招计算机测试题库必考题.docx VIP
- 《人工智能发展前沿》 何友教材 ppt课件 第8章 元宇宙.pptx VIP
- 一例胃癌患者的护理查房PPT课件.pptx VIP
- 《人工智能发展前沿》 何友教材 ppt课件 第7章 智能无人系统.pptx VIP
原创力文档

文档评论(0)