查询优化器
一 查询过程
二 查询优化器
2.1 产生执行计划<1> 评估每个计划的开销
<2> 查询执行及计划缓存
<3> 提示
2.2 连接
<1> 连接顺序
优化器在决定相关关联的时候,需要考虑两个方面:
第一 关联顺序的选择
第二 关联算法的选择
<2> 连接种类
嵌套循环、合并联接、哈希联接
三 执行引擎
3.1 数据访问操作<1> 扫描
<2> 查找
<3> 书签查找
3.2 聚合操作
<1> 排序和哈希
<2> 流聚合
<3> Hash聚合
3.3 并行操作
四 统计信息和开销预估
4.1 统计信息<1> 创建和更新统计信息
<2> 检查统计对象
通过sys.stats目录视图来查看某个对象的统计信息情况,示例如下:
- select *from sys.stats
- where object_id = object_id('Sales.SalesOrderDetail')
4.2 统计信息维护
4.3 计算列上的统计信息
4.4 过滤索引上的统计信息
当创建过滤索引时,会自动创建对应的统计信息,也可以通过在 create statistics 语句中加上 where子句来实现。
- create statistics California
- on Person.Address(City)
- where StateProvinceID=9
4.5 预估数量错误
- set statistics profile on
- go
-
- select *from sales.salesorderdetail
- where orderqty * unitprice > 10000
- go
-
- set statistics profile off
- go
4.6 更新统计信息
- update statistics dbo.Address with rowcount = 1000000, pagecount = 100000
五 优化器工作过程
优化器的工作过程分为: 简化、简单计划优化和完整计划优化1. 简化
2. 简单计划优化
3. 完整计划优化
4. 优化过程
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26435490/viewspace-1629795/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26435490/viewspace-1629795/