突然發現有乙個語句
update dnt_users set adminid = 0 where groupid = 7
執行得特別慢,更新的資料是四萬多條記錄, 表裡也是有四萬多條記錄。
在檢視後發現庫里有乙個觸發器
if exists (select name from sysobjects
where name = 'tr_updateusername' and type = 'tr')
drop trigger tr_updateusername
gocreate trigger tr_updateusername
on dnt_users
for update
asbegin
------------------------(1)-------------------
------------------------(1)-------------------
end這個觸發器主要是用來當dnt_users這個表的username更新時,同時更新其它表的。
一開始以為是觸發器裡的(1)位置的語句不夠優化的原因,但是後來就在(1)位置定義了乙個變數,沒有其它任何操作,更新時也是很慢。
當把觸發器刪除了,才變快。
在網上查了下資料:
在大量併發的情況下,使用觸發器是很危險的事。在併發量大的系統中觸發器很影響效能的.
如果非用不可,一定要注意sql的質量.
對效能的影響大小跟sql的質量關係很大.不能一概而論.觸發器多不是好事:
第一:一定會影響效能,若是資料量大時,每次都要觸發上百上千觸發器可想而知
第二:基於維護方面,不談有多少觸發器,當每修改一次觸發表相應觸發器就失效,符出代價可想而知.
不建義多用觸發器,用函式與過程代替之.
看來以後還是要多注意觸發器的使用
CURL不可以讀寫檔案
最近在學es elastic search 參考裡面翻譯的官方權威指南 後面發現官網已經推出了中文版文件了 裡面有的例子把訪問es的命令做了簡化如下 curl xget localhost 9200 count?pretty d 簡化為 get count 一開始我以為是es報的錯,進es的日誌,發...
觸發器 mysql觸發器
觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...
nyoj 1071 不可以! 水
時間限制 1000 ms 記憶體限制 65535 kb 難度 1 描述 判斷 兩個數x y的正負性。要求 不可以使用比較運算子,即 輸入 有多組資料,每組資料佔一行,每一行兩個數x,y。x y保證在int範圍內。輸出 每組資料輸出佔一行。如果兩個數是一正一負,輸出 signs are opposit...