好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > SQLServer 優化SQL語句 in 和not in的替代方案

SQLServer 優化SQL語句 in 和not in的替代方案

熱門標簽:臨沂智能電銷機器人加盟哪家好 電銷外呼有錄音系統有哪些 貴州房產智能外呼系統供應商 申請400電話在哪辦理流程 外呼運營商線路收費 鎮江網路外呼系統供應商 一個導航軟件能用幾個地圖標注點 百度地圖標注改顏色 小e電話機器人
但是用IN的SQL性能總是比較低的,從SQL執行的步驟來分析用IN的SQL與不用IN的SQL有以下區別:
SQL試圖將其轉換成多個表的連接,如果轉換不成功則先執行IN里面的子查詢,再查詢外層的表記錄,如果轉換成功則直接采用多個表的連接方式查詢。由此可見用IN的SQL至少多了一個轉換的過程。一般的SQL都可以轉換成功,但對于含有分組統計等方面的SQL就不能轉換了。 推薦在業務密集的SQL當中盡量不采用IN操作符
NOT IN 此操作是強列推薦不使用的,因為它不能應用表的索引。推薦用NOT EXISTS 或(外連接+判斷為空)方案代替
  在數據庫中有兩個表,一個是當前表Info(id,PName,remark,impdate,upstate),一個是備份數據表bakInfo(id,PName,remark,impdate,upstate),將當前表數據備份到備份表去,就涉及到not in 和in 操作了:
  首先,添加10萬條測試數據
復制代碼 代碼如下:

create procedure AddData
as
declare @id int
set @id=0
while(@id100000)
begin
insert into dbo.Info(id,PName,remark,impdate,upstate)
values(@id,convert(varchar,@id)+'0','abc',getdate(),0)
set @id=@id+1
end
exec AddData

使用not in 和in操作:
復制代碼 代碼如下:

SET STATISTICS TIME ON
GO
--備份數據
insert into bakInfo(id,PName,remark,impdate,upstate)
select id,PName,remark,impdate,upstate from dbo.Info
where id not in(select id from dbo.bakInfo)
GO
SET STATISTICS TIME OFF

此操作執行時間:
復制代碼 代碼如下:

SQL Server 分析和編譯時間:
CPU 時間 = 0 毫秒,占用時間 = 3 毫秒。
SQL Server 執行時間:
CPU 時間 = 453 毫秒,占用時間 = 43045 毫秒。
(100000 行受影響)
SQL Server 分析和編譯時間:
CPU 時間 = 0 毫秒,占用時間 = 1 毫秒。
--更改當前表狀態
update Info set upstate=1 where id in(select id from dbo.bakInfo)

  此操作執行時間:
復制代碼 代碼如下:

SQL Server 分析和編譯時間:
CPU 時間 = 62 毫秒,占用時間 = 79 毫秒。
SQL Server 執行時間:
CPU 時間 = 188 毫秒,占用時間 = 318 毫秒。
(100000 行受影響)
SQL Server 分析和編譯時間:
CPU 時間 = 0 毫秒,占用時間 = 1 毫秒。
--刪除當前表數據
delete from Info where upstate=1 and id in(select id from dbo.bakInfo)

  此操作執行時間:
復制代碼 代碼如下:

SQL Server 分析和編譯時間:
CPU 時間 = 183 毫秒,占用時間 = 183 毫秒。
SQL Server 執行時間:
CPU 時間 = 187 毫秒,占用時間 = 1506 毫秒。
(100000 行受影響)
SQL Server 分析和編譯時間:
CPU 時間 = 0 毫秒,占用時間 = 1 毫秒。

  使用join連接替代方案:
復制代碼 代碼如下:

SET STATISTICS TIME ON
GO
--備份數據
insert into bakInfo(id,PName,remark,impdate,upstate)
select id,PName,remark,impdate,upstate from
(SELECT Info.id,Info.PName, Info.remark, Info.impdate,Info.upstate, bakInfo.id AS bakID
FROM Info left JOIN
bakInfo ON Info.id = bakInfo.id ) as t
where t.bakID is null and t.upstate=0
GO
SET STATISTICS TIME OFF;

  此操作執行時間:
復制代碼 代碼如下:

SQL Server 分析和編譯時間:
CPU 時間 = 247 毫秒,占用時間 = 247 毫秒。
SQL Server 執行時間:
CPU 時間 = 406 毫秒,占用時間 = 475 毫秒。
(100000 行受影響)
SQL Server 分析和編譯時間:
CPU 時間 = 0 毫秒,占用時間 = 1 毫秒。
--更改當前表狀態
update Info set upstate=1
FROM Info INNER JOIN
bakInfo ON Info.id = bakInfo.id

  此操作執行時間:
復制代碼 代碼如下:

SQL Server 分析和編譯時間:
CPU 時間 = 4 毫秒,占用時間 = 4 毫秒。
SQL Server 執行時間:
CPU 時間 = 219 毫秒,占用時間 = 259 毫秒。
(100000 行受影響)
SQL Server 分析和編譯時間:
CPU 時間 = 0 毫秒,占用時間 = 1 毫秒。

--刪除當前表數據
復制代碼 代碼如下:

delete from Info
FROM Info INNER JOIN
bakInfo ON Info.id = bakInfo.id
where Info.upstate=1

  此操作執行時間:
復制代碼 代碼如下:

SQL Server 分析和編譯時間:
CPU 時間 = 177 毫秒,占用時間 = 177 毫秒。
SQL Server 執行時間:
CPU 時間 = 219 毫秒,占用時間 = 550 毫秒。
(100000 行受影響)
SQL Server 分析和編譯時間:
CPU 時間 = 0 毫秒,占用時間 = 1 毫秒。

  可以看出使用join方案比使用not in 和in執行時間要短很多了
您可能感興趣的文章:
  • 淺談MySQL中優化sql語句查詢常用的30種方法
  • sql語句優化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的語句
  • SQL SERVER 的SQL語句優化方式小結
  • MySQL SQL語句優化的10條建議
  • Mysql查詢最近一條記錄的sql語句(優化篇)
  • SQL Server中的SQL語句優化與效率問題
  • 常用SQL語句優化技巧總結【經典】
  • SQL語句優化方法30例(推薦)
  • 如何優化SQL語句的心得淺談
  • 你真的知道怎么優化SQL嗎

標簽:晉城 合肥 澳門 三明 日照 延邊 嘉興 保定

巨人網絡通訊聲明:本文標題《SQLServer 優化SQL語句 in 和not in的替代方案》,本文關鍵詞  SQLServer,優化,SQL,語句,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQLServer 優化SQL語句 in 和not in的替代方案》相關的同類信息!
  • 本頁收集關于SQLServer 優化SQL語句 in 和not in的替代方案的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产美乳在线观看| 久久国产精品亚洲一区男人资源站 | 97色伦在线视频播放| 国模孕妇季玥大胆私拍套装| 久久伊人精品综合观看99| 阿娇张开两腿实干13分钟图片| 女人18片毛片90分钟以上| 日日摸夜夜添夜夜添aa| 99精品久久精品一区二区| 911精品国自产在线偷拍| 翁熄系列回乡下| 在线欧美v日韩v国产精品v| 美女扒开让男人桶爽在线观看| 亚洲日韩欧美AV| 麻豆黄色片| 亚洲 美腿 欧美 偷拍| 久久这里只有精品久久| 含着乳鼓鼓涨奶水小说| 亚洲综合图片小说区热久久| 免费网站看黄yyy456啪啪| 男人舔女人下面视频免费| 亚洲乱欲| 男男视频高h在| 国产91精品秘?入口蝌蚪简美| 玉蒲团2之艳乳欲仙欲在线观| videospornoxxxx| 小孩操小孩| 免费无码婬片A片AAA毛扒开 | 黄色**毛片| 被几个男摁着强进了NP| 26uuu国产一区二区三区| 日日干日日摸| 69国产精品成人无码视频| 色欲AV午夜在线下载一区二区| 中文字幕在线第二页| 日韩成人一区二区三区在线观看| 日本口工福利漫画无遮挡| 国产无套白嫩进入在线观看 | 嫂子去哪了| 天天操电影| 一个人www在线观看免费资源|