成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL點(diǎn)滴之with語句和子查詢的性能比較

數(shù)據(jù)庫 SQL Server
之前筆者和大家分享了《使用with語句來寫一個(gè)稍微復(fù)雜sql語句》,這一次筆者針對with語句和子查詢做了一個(gè)性能的比較。

之前筆者和大家分享了《使用with語句來寫一個(gè)稍微復(fù)雜sql語句》,這一次筆者針對with語句和子查詢做了一個(gè)性能的比較。

在博友SingleCat的提醒下,對with語句做一些性能測試,這里使用的測試工具是SQL Server Profile。我選擇了***一個(gè)語句,因?yàn)檫@個(gè)語句比較復(fù)雜一點(diǎn)。開始的時(shí)候單獨(dú)執(zhí)行一次發(fā)現(xiàn)他們的差別不大,就差幾個(gè)毫秒,后來想讓他們多執(zhí)行幾次,連續(xù)執(zhí)行10

次看看執(zhí)行的結(jié)果。下面貼出測試用的語句。

  1. /*with查詢*/  
  2. declare @withquery varchar(5000)  
  3. declare @execcount int=0  
  4. set @withquery='with TheseEmployees as(  
  5. select empid from hr.employees where country=N''USA''),  
  6. CharacteristicFunctions as(  
  7. select custid,  
  8.        case when custid in (select custid from sales.orders as o where o.empid=e.empid) then 1 else 0 end as charfun  
  9. from sales.customers as c cross join TheseEmployees as e)  
  10. select custid from CharacteristicFunctions group by custid having min(charfun)=1 order by custid  
  11. '  
  12. while @execcount<10  
  13. begin 
  14. exec (@withquery);  
  15. set @execcount=@execcount+1  
  16. end 
  17.  
  18. /*子查詢*/  
  19. declare @subquery varchar(5000)  
  20. declare @execcount int=0  
  21. set @subquery='select custid from Sales.Orders where empid in 
  22. (select empid from HR.Employees where country = N''USA''group by custid  
  23. having count(distinct empid)=(select count(*) from HR.Employees where country = N''USA'');  
  24. '  
  25. while @execcount<10  
  26. begin 
  27. exec (@subquery);  
  28. set @execcount=@execcount+1  
  29. end 

從SQL Server Profile中截圖如下

從圖中可以看到子查詢語句的執(zhí)行時(shí)間要少于with語句,我覺得主要是with查詢中有一個(gè)cross join做了笛卡爾積的關(guān)系,于是又實(shí)驗(yàn)了上面的那個(gè)簡單一點(diǎn)的,下面是測試語句。

  1. /*with語句*/  
  2. declare @withquery varchar(5000)  
  3. declare @execcount int=0  
  4. set @withquery='with c(orderyear,custid) as(  
  5. select YEAR(orderdate),custid from sales.orders)  
  6. select orderyear,COUNT(distinct(custid)) numCusts from c group by c.orderyear'   
  7. while @execcount<100  
  8. begin 
  9. exec (@withquery);  
  10. set @execcount=@execcount+1  
  11. end 
  12.  
  13. /*子查詢*/  
  14. declare @subquery varchar(5000)  
  15. declare @execcount int=0  
  16. set @subquery='select orderyear,COUNT(distinct(custid)) numCusts  
  17. from (select YEAR(orderdate),custid from sales.orders) as D(orderyear,custid)  
  18. group by orderyear'  
  19. while @execcount<100  
  20. begin 
  21. exec (@subquery);  
  22. set @execcount=@execcount+1  
  23. end 

這次做10次查詢還是沒有多大的差距,with語句用10個(gè)duration,子查詢用了11個(gè),有時(shí)候還會(huì)翻過來。于是把執(zhí)行次數(shù)改成100,這次還是子查詢使用的時(shí)間要少,截圖如下

最終結(jié)論,子查詢好比with語句效率高。

原文鏈接:http://www.cnblogs.com/tylerdonet/archive/2011/04/18/2020225.html

【編輯推薦】

  1. SQL點(diǎn)滴之使用attach功能出現(xiàn)錯(cuò)誤及解決方法
  2. SQL點(diǎn)滴之一個(gè)簡單的字符串分割函數(shù)
  3. SQL點(diǎn)滴之重置win7登錄密碼對SQL登錄的影響
  4. SQL點(diǎn)滴之SSIS中的事務(wù)處理
  5. SQL點(diǎn)滴之使用with語句來寫一個(gè)稍微復(fù)雜sql語句

 

責(zé)任編輯:艾婧 來源: 博客園
相關(guān)推薦

2013-12-16 10:20:48

MySQL數(shù)據(jù)庫

2012-12-03 10:26:51

Scala

2011-08-02 13:04:40

SQL Server

2015-02-05 09:25:51

HTTPSSPDYHTTP2

2020-07-27 08:24:42

編程語言C語言Java

2011-09-09 10:10:13

SQL數(shù)據(jù)庫點(diǎn)滴

2014-08-20 09:49:50

虛擬機(jī)Linux Conta

2011-04-15 10:26:38

JavaMVC

2011-04-27 16:34:06

withSQL Server

2011-08-03 13:32:00

SQL Server優(yōu)化

2011-04-20 11:11:33

SQLSET QUOTED_

2009-05-25 08:39:08

iPhone蘋果移動(dòng)OS

2011-05-18 14:52:04

XML

2009-07-01 18:12:18

JSP的優(yōu)勢性能比較

2010-03-10 16:35:23

Python編程語言

2011-07-06 14:18:40

Percona SerMySQL

2009-12-16 14:10:22

路由技術(shù)性能比較

2023-11-20 10:34:09

語言

2011-08-09 10:21:55

SQL Server存儲(chǔ)過程分頁

2023-11-19 21:17:58

GoRust
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 免费黄色在线观看 | 日韩一区二区三区四区五区六区 | 国产亚洲网站 | 黄色免费网站在线看 | 成人毛片视频免费 | 国产精品久久亚洲7777 | 高清一区二区三区 | 爱综合| www.五月婷婷.com | 亚洲精品一二三区 | 日韩成人免费视频 | 日本精品一区二区 | 亚洲综合日韩精品欧美综合区 | 91偷拍精品一区二区三区 | 2019天天干夜夜操 | 中文字幕国产在线 | av高清毛片 | 国产精品久久久久久久久免费桃花 | 男女羞羞视频在线看 | 亚洲精品视频观看 | 日韩综合在线 | 久久久久综合 | 国产欧美一区二区三区久久 | 欧美精品一区二区三区蜜桃视频 | 精品亚洲二区 | 久久久久久久一区 | 国产精品久久久久一区二区 | 国产在线精品一区二区 | 精品自拍视频在线观看 | 欧产日产国产精品国产 | 青青久草 | 国产精品久久久久久久久久久久 | 香蕉视频一区二区 | 国产一区二区不卡 | 午夜视频在线免费观看 | tube国产 | 国产欧美日韩综合精品一区二区 | 国产一区 在线视频 | 亚洲一区二区精品视频 | 国产美女自拍视频 | 成人在线免费观看 |