SQLServer查询计划
参考:
http://blog.csdn.net/luoyanqing119/article/details/17022649
1. 开启方式
菜单栏:query---Display Estimated Execution Plan
图标栏:Display Estimated Execution Plan
2. 执行计划的图表是从右向左看的
开销--看百分比,
数据量--看箭头粗细
做了什么--鼠标悬停
<-----------
<-----------
<-----------
3. 查找数据的几种方式 (尽量实现后面的两种)
[Table Scan] 表扫描(最慢),对表记录逐行进行检查
[Clustered Index Scan] 聚集索引扫描(较慢),按聚集索引对记录逐行进行检查
[Index Scan] 索引扫描(普通),根据索引滤出部分数据在进行逐行检查
[Index Seek] 索引查找(较快),根据索引定位记录所在位置再取出记录
[Clustered Index Seek] 聚集索引查找(最快),直接根据聚集索引获取记录
4. 应对和分析慢查询的思路:
先检查哪些操作的成本比较高,再看看那些操作在查找记录时用scan,则要考虑增加索引来解决。注意添加索引后,也会影响数据表的修改动作
然后可以试试调整语句结构,引导SQL Server采用其它的查询方案去执行(比如使用临时表、CTE、更高效的查询等)
离散度不太大的数据,比如0/1这样的数据,可以考虑使用分区
5. 常见的优化:
为【scan】这类操作增加相应字段的索引
有时重建索引或许也是有效的,具体情形请参考后文
调整语句结构,引导SQL Server采用其它的查询方案去执行
调整表结构(分表或者分区)
提高硬件性能或者调整OS,内存,CPU,SQL Server的设置
6. 视图的优化:
视图也是由一个查询语句定义,多数时候不是直接使用原表,会加上where语句
优化视图时, 最好能根据实际需求,应用不同的过滤条件,再来决定如何去优化
SQL Server实现Join的方式:
1. Nested Loops Join 一张大表,一张小表
2. Merge join 两张表有排序,或者经扫描排序的索引而获得的数据
3. Hash Join 未排序的大型非索引输入
SQLServer查询计划的更多相关文章
- 【转载】看懂SqlServer查询计划
看懂SqlServer查询计划 阅读目录 开始 SQL Server 查找记录的方法 SQL Server Join 方式 更具体执行过程 索引统计信息:查询计划的选择依据 优化视图查询 推荐阅读-M ...
- 看懂SqlServer查询计划
看懂SqlServer查询计划 阅读目录 开始 SQL Server 查找记录的方法 SQL Server Join 方式 更具体执行过程 索引统计信息:查询计划的选择依据 优化视图查询 推荐阅读-M ...
- 看懂SqlServer查询计划【转】
原文链接:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 开始 SQL Server 查找记录的方法 SQL Server ...
- 看懂SqlServer查询计划 SQL语句优化分析
转自 http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 阅读目录 开始 SQL Server 查找记录的方法 SQL Ser ...
- 看懂SqlServer执行计划
在园子看到一篇SQLServer关于查询计划的好文,激动啊,特转载.原文出自:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.htm ...
- SQLServer查询执行计划分析 - 案例
SQLServer查询执行计划分析 - 案例 http://pan.baidu.com/s/1pJ0gLjP 包括学习笔记.书.样例库
- 小觑数据库(SqlServer)查询语句执行过程
近年来,越来越多的NoSql产品不断的以技术革命的者的身份跳出来:“你看哥是多么的快,你们关型型数据库真是战五渣阿”.是的,高性能的场景下NoSql真的很出彩.而我们关系型数据库只能在墙角哭泣&quo ...
- sqlserver查询---分配cpu等资源
数据库资源按需分配 https://www.cnblogs.com/i6first/p/4138365.html https://blog.csdn.net/kk185800961/article/d ...
- SQLServer查询语句收集
常用的SQLServer查询语句,有空可以多练习一下,增加记忆,可以提高工作效率! 1.数据操作 Select --从数据库表中检索数据行和列Insert --向数据库表添加新数据 ...
随机推荐
- Pycharm、IDEA等汉化教程
本汉化教程对jetbrains全系列可用:IDEA.Pycharm.WebStorm.phpstorm.AndroidStudio.GoLand.RubyMine.CLion 此汉化无副作用,绝对安全 ...
- Java高级开发工程师面试笔记
最近在复习面试相关的知识点,然后做笔记,后期(大概在2018.02.01)会分享给大家,尽自己最大的努力做到最好,还希望到时候大家能给予建议和补充 ----------------2018.03.05 ...
- 1.MySQL(一)
数据库简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 RDBMS 即关系数据库管理系统(Relational Database Management System) 1.特 ...
- remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
如果cmake提示下列错误:......CMake Error at cmake/readline.cmake:85 (MESSAGE): Curses library not found. Pl ...
- 懵逼的this指向
请看以下代码: 以上的console.log打印出来的,如果你能完全知道,请忽略,如果你不知道,那就接下来看吧. console.log打印的结果: Google非常智能地把对象给打印出来了,看结果, ...
- 设计模式java实现合集
http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 桥接模式:http://blog.csdn.net/jason05 ...
- macOS的OpenCL高性能计算
随着深度学习.区块链的发展,人类对计算量的需求越来越高,在传统的计算模式下,压榨GPU的计算能力一直是重点. NV系列的显卡在这方面走的比较快,CUDA框架已经普及到了高性能计算的各个方面,比如Goo ...
- Java开发需掌握的常用Linux命令(持续更新)
linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命 ...
- 如何用浏览器在线查看.ipynb文件
当我们用jupyter notebook编辑好.ipynb文件后,肯定会想不用运行jupyter notebook也能方便得查看.ipynb的文件,如果直接打开.ipynb的文件,我们 ...
- XML就是这么简单
什么是XML? XML:extensiable markup language 被称作可扩展标记语言 XML简单的历史介绍: gml->sgml->html->xml gml(通用标 ...