zoukankan      html  css  js  c++  java
  • SQL Server2008 inner join多种方式的实践

         这些天的学习,才发现自己对SQL原来是如此的不了解。之前一直以为自己轻松应对各种复杂的SQL查询,但是一旦提到效率上,可能就比较傻眼了,有时候也会埋怨客户的服务器不好使。

         至于Inner Join的三种方式:loop,merge, hash,园子里面有很多文章,话说看多遍不如自己实际操作一遍。今天也来操作一番试试。说明:T(4)表中约有4.6万行数据,T(1)表中约有4.1万行数据

         第一种:merge

    declare @begin datetime
    Declare @end datetime
    set @begin = GETDATE()
    set statistics io on Select * From dbo.[T(4)] inner merge join dbo.[T(1)] On dbo.[T(4)].keyword0 = dbo.[T(1)].keyword0
    set statistics io off set @end = GETDATE() print datediff(millisecond,@begin,@end)

      第二种:hash

       

    Declare @begin datetime
    Declare @end datetime
    set @begin = GETDATE()
    set statistics io on Select * From dbo.[T(4)] inner hash join dbo.[T(1)] On dbo.[T(4)].keyword0 = dbo.[T(1)].keyword0
    set statistics io off set @end = GETDATE() print datediff(millisecond,@begin,@end)

      两种SQL执行的结果分别显示:

    (239657 行受影响)
    表 'T(4)'。扫描计数 10,逻辑读取 3236 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 ''T(1)'。扫描计数 10,逻辑读取 3064 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    表 'Worktable'。扫描计数 12,逻辑读取 430 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    耗时:22006


       (239657 行受影响)
      表 ''T(4)'。扫描计数 10,逻辑读取 3236 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
      表 ''T(1)'。扫描计数 10,逻辑读取 3064 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
      表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
    耗时:17026

       从上可以看出,Merge比Hash多了一步操作,就是对Worktable的操作,多出的时间耗时应该就是在此处所消耗的。

       CPU耗时分别如下:

       (239657 行受影响)

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

      (239657 行受影响)

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

       本来还想查看下内存开销,结果不知道有啥好的方法可以查看内存开销。今天就先暂时到这,后续继续。

     

  • 相关阅读:
    二分查找小结
    FZU みねちゃんの修罗场(从一堆出现三次的数中找出出现两次的数)
    《C陷阱与缺陷》杂记
    HDU 1846 Brave Game(巴什博弈)
    【转载】并查集详解
    第七次作业——学末总结
    STL之vector
    fzuoop期中练习
    MFC 文件对话框
    第六次作业——利用MFC实现计算器图形界面以及简单四则运算表达式批处理
  • 原文地址:https://www.cnblogs.com/zhongjicainiao/p/4897867.html
Copyright © 2011-2022 走看看