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条件对条件的序列要求不同,连接查询建议将大概率条件置于左侧

  • 相关阅读:
    Go通过闭包避免程序运行崩溃
    占个坑
    Go多核并行
    一个计划
    python入门:模拟简单用户登录(自写)
    python入门:if、elif、else 条件语句的基本用法
    python入门:if和else的基本用法
    python入门:print打印输出的用法
    python入门:最基本的用户登录
    Python入门:Python基础笔记
  • 原文地址:https://www.cnblogs.com/jeffry/p/5655234.html
Copyright © 2011-2022 走看看