zoukankan      html  css  js  c++  java
  • 使用like时left outer join和inner join的区别

    --select top 10000 * into #s from search
    set statistics time on 
    set statistics io on
    select userId,count(*) as searchNum,s.Posttime, p.RootID ,s.url
    from #s s
    left outer join ProductInfo p on s.ProductID like '%' + p.RootID + '%'
    group by userid, p.RootID,s.Posttime,s.url
    
    --dbo.GetPlatform(s.url) like 41s --- like 13s --去掉userid的case 13s
    select userId,count(*) as searchNum,s.Posttime,p.RootID ,s.url
    from #s s
    inner  join ProductInfo p on s.ProductID like '%' + p.RootID + '%'
    group by userid, p.RootID, s.Posttime,s.url
    set statistics time off
    set statistics io off
    View Code


    SQL Server 执行时间:
    CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

    (1228 行受影响)
    表 '#s__________________________________________________________________________________________________________________000000000655'。扫描计数 3,逻辑读取 223 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 'Worktable'。扫描计数 287,逻辑读取 19242 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 'CNKI_ProductInfo'。扫描计数 2,逻辑读取 4207 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

    (1 行受影响)

    SQL Server 执行时间:
    CPU 时间 = 2984 毫秒,占用时间 = 2704 毫秒。

    (1224 行受影响)
    表 'CNKI_ProductInfo'。扫描计数 3,逻辑读取 16 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 'Worktable'。扫描计数 2,逻辑读取 84888 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 '#s__________________________________________________________________________________________________________________000000000655'。扫描计数 2,逻辑读取 446 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

    (1 行受影响)

    SQL Server 执行时间:
    CPU 时间 = 24923 毫秒,占用时间 = 12861 毫秒。

    最好把like改成以下方式实现

    select Convert(varchar(10),s.Posttime,20),p.RootID,dbo.GetPlatform(s.url),case userId when -1 then -1 else 2 end ,COUNT(*),0,0 
    from Search s cross apply dbo.ParameterSplit(s.ProductID,';') sp
    inner join ProductInfo p on sp.Item = p.RootID 
    where s.PostTime >=  Convert(varchar(10),'2012-01-01',20)   and s.PostTime < Convert(varchar(10),'2013-09-09',20) 
    group by Convert(varchar(10),s.Posttime,20),p.RootID,dbo.GetPlatform(s.url),case userId when -1 then -1 else 2 end 
    View Code
  • 相关阅读:
    MySQL修改root密码的多种方法
    (转)云存储:阿里云OSS 、又拍云和 七牛 的比较
    微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨
    Feed系统架构资料收集
    百万用户时尚分享网站feed系统扩展实践
    (转)浅谈MD5加密算法中的加盐值(SALT)
    json转换成list map集合
    android在假设绘制自己定义的bitmap,然后返回给ImageView
    APPCAN学习笔记003---原生开发与HTML5技术
    【问题解决】syntax error: unexpected end of file或-bash: ./full_build.sh: /bin/bash^M: bad interpreter: No
  • 原文地址:https://www.cnblogs.com/shanjsh/p/3145856.html
Copyright © 2011-2022 走看看