SQL索引优化方法

2016-02-19 18:16 3 1 收藏

下面图老师小编跟大家分享SQL索引优化方法,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - 编程语言 】

SELECT TOP 50
ROW_NUMBER() OVER(ORDER BY ResumeCreateTime DESC) as [RowID]
,[TopDegree]
,[DegreeRankID]
,[UserResume].[UserResumeID]
,[UserResume].[UserID]
,[ResumeName]
,[BirthDate]
,[WorkStartedDate]
,[SalaryNeeded]
,[BufferTimeSpanID]
,[ResumeCreateTime]
FROM [dbo].[UserResume] INNER JOIN [dbo].[WorkExperience] ON [WorkExperience].[UserResumeID] = [UserResume].[UserResumeID]
WHERE
(CONTAINS([WorkExperience].[WorkSummary],'经理') OR CONTAINS([UserResume].[ResumeName],'简历'))

  第一次执行:没有建立任何索引。

  执行效果:

  表 'Worktable'。扫描计数 0,逻辑读取 0 次

  表 'UserResume'。扫描计数 1,逻辑读取 18524 次

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  表 'WorkExperience'。扫描计数 1,逻辑读取 8679 次

  (1 行受影响)

  SQLServer 执行时间:

  CPU 时间 = 2152 毫秒,占用时间 = 3126 毫秒。

  第二次执行:

  查看执行计划WorkExperience表是表扫描,建立IX_WorkExperience索引(在ID列和JOIN 参照的ID列上)。

  调整后效果:

  表 'WorkExperience'。扫描计数 1,逻辑读取 1071 次

  表 'UserResume'。扫描计数 1,逻辑读取 18524 次

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  (1 行受影响)

  SQL Server 执行时间:

  CPU 时间 = 1638 毫秒,占用时间 = 2045 毫秒。

  第三次执行:

  查看执行计划,UserResume表是表扫描,建立IX_UserResume索引。

  调整后效果:

  表 'WorkExperience'。扫描计数 11,逻辑读取 48 次

  表 'UserResume'。扫描计数 1,逻辑读取 3095 次

  (1 行受影响)

  SQL Server 执行时间:

  CPU 时间 = 1248 毫秒,占用时间 = 1568 毫秒。

  第四次执行:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  查看执行计划,在IX_UserResume索引扫描后,产生了createtime列的重新排序,调整了IX_UserResume索引中createtime的位置和排序规则。

  调整后效果:

  (50 行受影响)

  表 'WorkExperience'。扫描计数 11,逻辑读取 48 次

  表 'UserResume'。扫描计数 1,逻辑读取 3 次

  (1 行受影响)

  SQL Server 执行时间:

  CPU 时间 = 15 毫秒,占用时间 = 404 毫秒。

来源:http://www.tulaoshi.com/n/20160219/1617147.html

延伸阅读
1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. /*+FIRST_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化. 例如: SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN...
一,索引的概述 1,概念: 数据库索引是对数据表中一个或多个列的值进行排序的结构,就像一本书的目录一样,索引提供了在行中快速查询特定行的能力. 2,优缺点: 2.1优点: 1,大大加快搜索数据的速度,这是引入索引的主要原因. 2,创建唯一性索引,保证数据库表中每一行数据的唯一性. 3,加速表与表之间的连接,特别是在实现数据的参考完整性方面特别...
索引在数据库相关工作者的日常工作中占据了很重要的位置,索引需要牵涉到索引创建、优化和维护多方面的工作,本文以实例结合相关原理来介绍索引维护相关的知识。文中的相关代码,也可以满足多数情况下索引的维护需求。 实现步骤 1. 以什么标准判断索引是否需要维护? 2. 索引维护的方法有哪些? 3. 能否方便地整理出...
在实际的工作中,尤其是在生产环境里边,SQL语句的优化问题十分的重要,它对数据库的性能的提升也起着显著的作用.我们总是在抱怨机器的性能问题,总是在抱怨并发访问所带来的琐问题,但是如果我们对没一条SQL语句进行优化,尽管不能说可以解决全部问题,但是至少可以解决大部分问题. 1.Top排序问题. 我们经常要对表某个字段进行排序,然后取前N名.所以...
标签: SQLServer
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表...

经验教程

82

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部