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

主頁 > 知識庫 > SQL中WHERE變量IS NULL條件導致全表掃描問題的解決方法

SQL中WHERE變量IS NULL條件導致全表掃描問題的解決方法

熱門標簽:陽光創信ai外呼獲客系統助力 云南全自動外呼系統公司 競圣地圖標注服務 安陽天音防封電銷卡 外呼系統的話術 智能外呼系統需要多少錢 智能語音車載電話機器人 衛星地圖標注距離 貴州外呼回撥系統是什么

復制代碼 代碼如下:

SET @SQL = 'SELECT * FROM Comment with(nolock) WHERE 1=1
    And (@ProjectIds Is Null or ProjectId = @ProjectIds)
    And (@Scores is null or Score =@Scores)'


印象中記得,以前在做Oracle開發時,這種寫法是會導致全表掃描的,用不上索引,不知道Sql Server里是否也是一樣呢,于是做一個簡單的測試
1、建立測試用的表結構和索引:
復制代碼 代碼如下:

CREATE TABLE aaa(id int IDENTITY, NAME VARCHAR(12), age INT)
go
CREATE INDEX idx_age ON aaa (age)
GO

2、插入1萬條測試數據:

復制代碼 代碼如下:

DECLARE @i INT;
SET @i=0;
WHILE @i10000
BEGIN
  INSERT INTO aaa (name, age)VALUES(CAST(@i AS VARCHAR), @i)
  SET @i=@i+1;
END
GO

3、先開啟執行計劃顯示:
在SQL Server Management Studio的查詢窗口里,右擊窗口任意位置,選擇“包含實際的執行計劃”:

4、開始測試,用下面的SQL進行測試:

復制代碼 代碼如下:

DECLARE @i INT;
SET @i=100
SELECT * FROM aaa WHERE (@i IS NULL OR age = @i)
SELECT * FROM aaa WHERE (age = @i OR @i IS NULL)
SELECT * FROM aaa WHERE age=isnull(@i, age)
SELECT * FROM aaa WHERE age = @i

測試結果如下:

可以看到,即使@i有值,不管@i IS NULL是放在前面還是放在后面,都無法用到age的索引,另外age=ISNULL(@i,age)也用不上索引

最終結論,SQL Server跟ORACLE一樣,如果條件里加了 變量 IS NULL,都會導致全表掃描。

建議SQL改成:

復制代碼 代碼如下:

DECLARE @i INT;
SET @i=100

DECLARE @sql NVARCHAR(MAX)
SET @sql = 'SELECT * FROM aaa'
IF @i IS NOT NULL
    SET @sql = @sql + ' WHERE age = @i'
EXEC sp_executesql @sql, N'@i int', @i


當然,如果只有一個條件,可以設計成2條SQL,比如:
復制代碼 代碼如下:

DECLARE @i INT;
SET @i=100
IF @i IS NOT NULL
    SELECT * FROM aaa WHERE age = @i
ELSE
    SELECT * FROM aaa

但是,如果條件多了,SQL數目也變得更多,所以建議用EXEC的方案

您可能感興趣的文章:
  • MySQL Where 條件語句介紹和運算符小結
  • MYSQL WHERE語句優化
  • MySQL 存儲過程傳參數實現where id in(1,2,3,...)示例
  • MySQL左聯多表查詢where條件寫法示例
  • MySQL 聯合索引與Where子句的優化 提高數據庫運行效率
  • sql語句中where 1=1的作用
  • MySQL中union和join語句使用區別的辨析教程
  • SQL語句的并集UNION 交集JOIN(內連接,外連接)等介紹
  • 解析sql語句中left_join、inner_join中的on與where的區別
  • 解析mysql left( right ) join使用on與where篩選的差異
  • SQL中JOIN和UNION區別、用法及示例介紹
  • sql join on 用法
  • SQL where條件和jion on條件的詳解及區別

標簽:鄂爾多斯 欽州 湘潭 周口 河源 寧夏 營口 預約服務

巨人網絡通訊聲明:本文標題《SQL中WHERE變量IS NULL條件導致全表掃描問題的解決方法》,本文關鍵詞  SQL,中,WHERE,變量,NULL,條件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL中WHERE變量IS NULL條件導致全表掃描問題的解決方法》相關的同類信息!
  • 本頁收集關于SQL中WHERE變量IS NULL條件導致全表掃描問題的解決方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 天天爽夜夜爽人人爽一区二区| 李氏被婢女扶着挨C| 夜晚偷偷看绿色正能量| freehdxxxxchina动漫| 国产色情aⅴ一级毛片黄鳝门事件| 国产成人精品三级高清久久91| 香蕉app网站无限免费下载| 国产91丝袜在线播放动漫| 一边下奶一边吃面膜视频讲解图片 | 农村极度乱人伦的小说免费| 国产乡下三?片在线观看| 秦先生大战96年翘臀女神在线| 国产一级a毛一级a看免费观看| 她声动我心小说| 无码人妻精品一区二区二秋霞影院| bl高h乱肉辣文| 国产一卡二卡≡卡四卡无人区| 日韩在线观看不卡| 免费无遮挡??漫画网站下载樱桃 | 潘春春108tv酱未删减版| 精品国产91亚洲一区二区三区www| 欧美挤奶吃奶水XXXXX| 国产处女视频| hd最新国产人妖ts视频| 亚洲精品视频在线看| 亚洲午夜精品一区二区天猫影视| 日韩?欧美?国产| 亚洲男人的天堂2019| 久色影视| 男毛片| 97色伦影院| 把女人弄特爽黄a大片| 男女性动态激烈动全过程| 精品国产免费福利片| 好硬啊进得太深了h双性| 女学生被?c??扒衣服| 国产农村妇女三级全黄大结局| 甜性涩爱韩国未删在线观看 | 91精品福利手机国产在线| 51网曝吃瓜黑料大瓜今日入口| 欲色天天婬香婬色综合网|