查询优化器

来源:这里教程网 时间:2026-03-02 10:42:22 作者:


查询优化器


一   查询过程




二   查询优化器

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.  优化过程

相关推荐