SQL查询优化--索引的使用与管理
更新时间:2023-08-31 07:38:01 阅读量: 教育文库 文档下载
SQL查询优化--索引的使用与管理
1.执行计划
执行计划的作用:执行计划可以是根据SQL Server查询优化器估算的计划,不需要查询语句真正执行,减少数据库负荷
使用执行计划的方式:不实际执行,只估算出执行计划、实际执行SQL语句后,根据实际情况总结出执行计划
执行计划的常用图标;
案例需求: 通过两种执行计划查看在数据库adventureWorks上的查询语句: Select * From PRODUCTION.WORKORDER Where PRODUCTID =732 的执行情况。 实施方法一:事先查看执行计划
实施方法二:执行查询后显示执行计划
2.客户端统计
客户端统计信息功能获取查询后的实际花销信息,与查询计划一起配合使用分析查询效率更加方便有效
实施方法:
选择客户统计信息按钮
输入SQL语句
选择执行计划的全局效果图
查看显示的执行计划
查看执行计划图
查看节点内容
3.使用索引的查询语句的写法
查询语句基本写法:
Select [字段列表] From table1 Where 条件表达式1 {and|or} 条件表达式2 {and|or} …条件表达式n;
查询语句使用索引的最基本要求就是要以索引字段为查询条件
条件表达式的样式为 {[索引字段] 条件运算符 [值]}
使用查询语句的注意事项:
查找条件中不要将字段进行运算
LIKE模糊查询字段的通配符是第一个字符,查询不会使用索引
查询条件使用not或者!=操作符时,查询不会使用索引
使用组合索引,查询条件必须包含组合索引里第一个索引字段
如果查询结果字段与查询条件的字段总是成对出现,建议使用索引表查询
查找条件中不要将字段进行运算
案例需求:对比下列语句 ,分析索引使用情况:
1、Select * From PRODUCTION.WORKORDER Where ProductID + 10=742
2、Select * From PRODUCTION.WORKORDER Where ProductID=732
查询没有使用索引的情况
查询使用索引的情况
查询条件使用not或者!=操作符时
案例需求:查看
Select * From PRODUCTION.WORKORDER Where ProductID!=732 的索引使用情况
使用组合索引的效果
案例需求:数据表PRODUCTION.WORKORDER建立两个组合索引:
索引1:
IX_WorkOrder_ProductIDStartDateEndDate
包含三个字段(ProductID,StartDate,EndDate)
索引2:
IX_Workorder_StartdateEnddate包含字段
两个字段(StartDate,EndDate)
查询结果字段与查询条件字段成对出现
案例需求:分析查询语句
Select ProductID From PRODUCTION.WORKORDER
Where startdate >cast(‘2001-07-12’ As datetime) And startdate <
cast(‘2001-07-14’ As datetime) 使用以下哪组索引?
索引1:
IX_WorkOrder_ProductIDStartDateEndDate包含字段
(ProductID,StartDate,EndDate)
索引2 :
IX_Workorder_StartdateEnddate包含字段(StartDate,EndDate)
关于管理索引
1.禁用与重建索引
索引建立后一般不需要维护,数据库能够自动维护信息,但是在某些情况下还是需要手动维护。例如:每月一次的入库操作,其他时间都是查询操作。在批量更新的时候就不合适使用索引,平时查询适合使用索引,这个时候就需要人工维护索引,在批量更新时禁用索引,当批量更新后,重新建立索引。 禁用索引还有以下规则:
1.如果索引是创建主键产生或者具备唯一性约束,那么禁用索引也会禁用这些约束。
2.如果索引是聚集索引,禁用索引相当于将表禁用,用户不能够再操作数据表。
3.查询与维护语句执行时不会使用禁用索引,但是如果用查询提示使用己禁用的索引,查询语句会操作失败。
4.不能创建与已禁用索引同名的索引,这个是对禁用索引与删除索引的区别。
案例需求:禁用PRODUCTION.WORKORDER表上的聚集索引,访问表时会提示不允许访问。
实施步骤:
选择聚集索引
禁用索引
尝试打开WorkOrder表,查看效果
重建索引
重新打开WokrOrder表,查看效果
2.整理索引数据碎片
再数据使用了一段时间后,必然会产生碎片.那么产生碎片后就到知道使用索引的效率降低.进而导致查询的效率降低.为了应对索引碎片,一般比较好的办法就是重新建立或重新整理碎片来组织索引.重新填满数据块.并除去数据碎片.
注意事项:如果碎片很小,则不需要重新生成或重新组织碎片,如果碎片小于30%,则可以选择重新组织索引,如果碎片大于30%,则可以重新生成索引。
查看索引碎片
重新组织索引
重新生成索引
重新组织索引
3.维护索引统计信息
索引统计信息的作用:随着列中数据的更改,索引和列的统计信息会自动更新保持一致,如果统计信息停用,可能导致查询优化器参考错误的统计信息,从而使用错误的执行计划。 可以举一个例子:在一个包含1000行数据的表上创建索引,索引列中包含的数据都是唯一值,查询优化器把该索引列视为搜集查询数据的最好方法。如果更新活动频繁发生,使得索引列中的数据有很多重复值,则该列对于查询不再是理想的候选列。
手动更新索引的统计信息
查看统计信息
动更新统计信息
选择更新统计信息复选框完成更新
设置数据库关闭自动更新统计信息操作
正在阅读:
SQL查询优化--索引的使用与管理08-31
“四风”方面存在的突出问题及主要表现02-08
写寒假生活的日记三篇11-21
初中语文教材教法模拟试题11-15
2017建军节给军人老公的短信02-10
消防维护保养方案08-31
论正态分布的重要地位和应用205-25
中国中央政府门户网站栏目架构表(全)10-20
单病种质量及临床路径管理制111-09
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 索引
- 优化
- 使用
- 查询
- 管理
- SQL
- 下列四种文件格式中,不属于视频文件格式的是(). A.MPEG格式
- 江西省“十二五”期间深化医药卫生体制改革规划暨实施方案赣府发30号
- UML课程设计报告--汽车系统
- 王某写了一本小说,授权甲网络公司以连载方式在该公司的网站上发布。在未经
- 重庆大学网络教育学院161批次建筑施工技术 ( 第3次 )答案
- 最终修改—建筑工程项目合同管理中索赔与反索赔的研究肖露doc
- 2019届九年级上学期第二次月考物理试题(附答案)
- 财务报表分析方法
- 知识问答竞赛(1)策划书
- 详细服务方案
- 除颤仪的考试答案
- 330MW锅炉逻辑总说明
- 2014--2015学年个人校本研修工作总结
- 2017-2023年中国汽车美容市场前景研究与未来发展趋势报告(目录)
- 茶花秋季扦插与老枝嫁接
- 词汇与语法
- 国家物价局、建设部价费字168号-城市规划设计收费标准1993
- 功率因数调整电费管理办法
- 夏季促销活动
- 金属橡胶研究新进展