sql server datediff函數(shù)引發(fā)的性能問題

1茅郎、問題分析:

本系統(tǒng)是sql server數(shù)據(jù)庫癣朗,仔細分析了該語句拾因,就是想查詢與當(dāng)前日期差異為3分鐘。就這么一個條件旷余,由于使用的人多绢记,所以造成了阻塞。
條件如下:
where datediff(mi,uptime,getdate())>=3
仔細查看了數(shù)據(jù)庫的索引正卧,并沒有關(guān)于uptime的索引蠢熄,再查看執(zhí)行計劃,該語句走的是全表掃描穗酥,但實際上即使使用索引护赊,該語句也不會使用索引,因為針對此列使用函數(shù)砾跃。

2骏啰、優(yōu)化解決

將where后面的條件進行修改調(diào)整
修改為如下:
uptime <= DateAdd(minute,-3,getdate())
另外,如果條件可以抽高,再建議查詢前將getdate()
@date = getdate()
這樣調(diào)整后判耕,再針對uptime字段建上索引,問題得到圓滿解決翘骂,阻塞沒有了壁熄。

3帚豪、關(guān)于兩個函數(shù)的說明

3.1 dateiff使用說明

DateDiff 函數(shù)用于判斷在兩個日期之間存在的指定時間間隔的數(shù)目。例如可以使用 DateDiff 計算兩個日期相差的天數(shù)草丧,或者當(dāng)天到當(dāng)年最后一天之間的星期數(shù)狸臣。要計算 date1 和 date2 相差的天數(shù),可以使用“一年的日數(shù)”(“y”)或“日”(“d”)昌执。當(dāng) interval 為“一周的日數(shù)”(“w”)時烛亦,DateDiff 返回兩個日期之間的星期數(shù)。如果 date1 是星期一懂拾,則 DateDiff 計算到 date2 之前星期一的數(shù)目煤禽。此結(jié)果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”)岖赋,則 DateDiff 函數(shù)返回日歷表中兩個日期之間的星期數(shù)檬果。函數(shù)計算 date1 和 date2 之間星期日的數(shù)目。如果 date2 是星期日唐断,DateDiff 將計算 date2选脊,但即使 date1 是星期日,也不會計算 date1栗涂。
如果 date1 晚于 date2知牌,則 DateDiff 函數(shù)返回負數(shù)。
firstdayofweek 參數(shù)會對使用“w”和“ww”間隔符號的計算產(chǎn)生影響斤程。
如果 date1 或 date2 是日期文字,則指定的年度會成為日期的固定部分菩混。但是如果 date1 或 date2 被包括在引號 (" ") 中并且省略年份忿墅,則在代碼中每次計算 date1 或 date2 表達式時,將插入當(dāng)前年份沮峡。這樣就可以編寫適用于不同年份的程序代碼疚脐。
在 interval 為“年”(“yyyy”)時,比較 12 月 31 日和來年的 1 月 1 日邢疙,雖然實際上只相差一天棍弄,DateDiff 返回 1 表示相差一個年份。
下面的示例利用 DateDiff 函數(shù)顯示今天與給定日期之間間隔天數(shù):
Function DiffADate(theDate)
DiffADate = "從當(dāng)天開始的天數(shù):" & DateDiff("d", Now, theDate)
End Function
由于該函數(shù)在查詢使用過程中疟游,經(jīng)常會把列做為一個參數(shù)值呼畸,再加上另一個時間值進行比較,導(dǎo)致函數(shù)無法使用索引颁虐,很多情況下會導(dǎo)致性能下降

3.2 dateadd使用說明

可以使用 DateAdd 函數(shù)對日期加上或減去指定的時間間隔蛮原。例如,可以用 DateAdd 來計算距今天為三十天的日期另绩;或者計算距現(xiàn)在為 45 分鐘的時間儒陨。
為了對 date 加上“日”花嘶,可以使用“一年的日數(shù)” (“y”),“日” (”d”) 或“一周的日數(shù)” (”w”)蹦漠。
DateAdd 函數(shù)將不返回有效日期椭员。在以下實例中將 1 月31 日加上一個月:
DateAdd(m, 1, 31-Jan-95)
上例中,DateAdd 返回 1995 年 2 月 28 日笛园,而不是 1995 年 2 月 31 日隘击。如果 date 是 1996 年 1 月 31 日,則由于 1996 年是閏年喘沿,返回值是 1996 年 2 月 29 日闸度。
如果計算的日期超前 100 年(減去的年度超過 date 中的年份),就會導(dǎo)致錯誤發(fā)生蚜印。
如果 number 不是一個 Long 值莺禁,則在計算時取最接近的整數(shù)值來計算。
注意 DateAdd 返回值的格式由 Control Panel設(shè)置決定窄赋,而不是由傳遞到date 參數(shù)的格式?jīng)Q定哟冬。
DateAdd ( "m" , 1 , "31-Jan-98")
結(jié)果: 28-Feb-98
將日期 31-Jan-98 加上一個月,結(jié)果為 28-Feb-98 而非 31-Fe-98 忆绰。
DateAdd ( "d" , 20 , "30-Jan-99")
結(jié)果: 1999/2/9
將一個日期 30-Jan-99 加上 20 天后的日期浩峡。
由于該函數(shù)里面只包含一個日期值,那么在查詢的時候错敢,就可以不對當(dāng)前的日期列進行轉(zhuǎn)換翰灾,而是將比較的日期及差值放在=、<=稚茅、>=的右面纸淮,這樣,就可以使用索引亚享。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咽块,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子欺税,更是在濱河造成了極大的恐慌侈沪,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晚凿,死亡現(xiàn)場離奇詭異亭罪,居然都是意外死亡,警方通過查閱死者的電腦和手機晃虫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門皆撩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事扛吞∩胩瑁” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵滥比,是天一觀的道長亚脆。 經(jīng)常有香客問我,道長盲泛,這世上最難降的妖魔是什么濒持? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮寺滚,結(jié)果婚禮上柑营,老公的妹妹穿的比我還像新娘。我一直安慰自己村视,他們只是感情好官套,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚁孔,像睡著了一般奶赔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杠氢,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天站刑,我揣著相機與錄音,去河邊找鬼鼻百。 笑死绞旅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的温艇。 我是一名探鬼主播玻靡,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼中贝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起臼朗,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤邻寿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后视哑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绣否,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年挡毅,在試婚紗的時候發(fā)現(xiàn)自己被綠了蒜撮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖段磨,靈堂內(nèi)的尸體忽然破棺而出取逾,到底是詐尸還是另有隱情,我是刑警寧澤苹支,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布砾隅,位于F島的核電站,受9級特大地震影響债蜜,放射性物質(zhì)發(fā)生泄漏晴埂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一寻定、第九天 我趴在偏房一處隱蔽的房頂上張望儒洛。 院中可真熱鬧,春花似錦狼速、人聲如沸琅锻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浅浮。三九已至,卻和暖如春捷枯,著一層夾襖步出監(jiān)牢的瞬間滚秩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工淮捆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留郁油,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓攀痊,卻偏偏與公主長得像桐腌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子苟径,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348