zoukankan      html  css  js  c++  java
  • sql执行顺序与性能优化小技巧(一)


    关于sql条件匹配对执行效率影响测试

    首先,创建一个标量函数
    create function ff_test()

    returns int

    as

    begin

         declare @i int=0

         while(@i<100000000)

         set @i+=1

         return @i

    end

    其次,选定随意一张表,这里使用业务表mt_delegate

    观察如下两种情形

    1.   select * from mt_delegate where procid=-1 or dbo.ff_test()>10000

    2.   select * from mt_delegate where dbo.ff_test()>10000 or procid=-1

    结果是where条件语句的次序不会对执行产生影响,明显sql引擎对where条件已做优化

    再观察如下情形

    1.------------------------------------------------------------------------------------------------
     select a.* from dbo.mt_delegate a
                inner join dbo.mt_delegate b on a.procid=b.procid and (dbo. ff_test()>10000 or  
     a.activityid=-1)

    2.------------------------------------------------------------------------------------------------
      select a.* from dbo.mt_delegate a
                inner join dbo.mt_delegate b on a.procid=b.procid and ( a.activityid=-1 or  
    dbo. ff_test()>10000 )

    结果,1情形查询明显效率低下,而2情形很快出结果,由此推定SQL连接查询条件执行是按照由左向右顺序比对,而非一些文章所说右匹配

    结论,SQL查询连接查询条件和where条件对条件的序列要求不同,连接查询建议将大概率条件置于左侧

  • 相关阅读:
    Python基础知识大总结
    Python基础教程第一章 python基础知识
    XDUOJ 1000-1002题解
    C# PDF格式 下载
    C# 文件(图片)下载
    C# DataTable转List
    C# Excel导入与导出
    C# 文件压缩与解压
    C# 文件流 导入 导出
    C# lambda表达式
  • 原文地址:https://www.cnblogs.com/jeffry/p/5655234.html
Copyright © 2011-2022 走看看