在專案測試中,我們可能會使用批量生成資料來測試程式的效能。
這裡講乙個我遇到的問題,由於我們批量生成資料時基本上是瞬間完成,所以getdate()函式獲得的時間基本上也是一樣的,而我們又要求生成每條資料的時間不同,那麼如何來解決這個問題?
網上搜尋了很多,這裡我是使用游標+waitfor來處理的:
首先來講下游標,因為個人也是才使用游標,而且也沒有深入研究。
那麼游標是用來幹什麼的呢?一般我們使用游標是用來對查詢出來的結果集進行處理的(修改,新增...)。
t-sql中的游標定義在msdn中如下:
declare cursor_name cursor [ local | global ]
[ forward_only | scroll ]
[ static | keyset | dynamic | fast_forward ]
[ read_only | scroll_locks | optimistic ]
[ type_warning ]
for select_statement
[ for update [ of column_name [ ,...n ] ] ]
[;]游標的簡單定義:declare 游標名 cursor for 結果集
開啟游標:open 游標名
向下讀取游標:fetch next from 游標名 into 接收從結果集中讀取到的資料的變數
關閉游標:close 游標名
釋放游標:deallocate 游標名
這裡因為要使用游標對結果集進行遍歷,那麼我們必須要來介紹乙個全域性變數@@fetch_status
@@fetch_status 返回被 fetch 語句執行的最後游標的狀態,而不是任何當前被連線開啟的游標的狀態。
返回值 描述 0 fetch 語句成功。 -1 fetch 語句失敗或此行不在結果集中。 -2 被提取的行不存在
這裡只是介紹游標一些簡單的用法。
下面我們再來介紹一下如何在資料庫中使用延遲
waitfor delay '00:00:01'--一秒後執行print語句
print '我是延遲執行的'
waitfor delay '00:00:00.010'--10毫秒後執行print語句
print '我是延遲執行'
waitfor time '10:00:00'--十點執行print語句
print '我是延遲執行'
mysql游標很慢 Sqlserver 游標 慢
net專案中有個模組做統計功能,原先方法速度很慢,所以需要改進,統計結果如下圖 下圖接上圖後面 原先的處理方式是,這些資料分別涉及到四五張表,前台從資料庫中查詢出需要的資料集,然後分別遍歷這些資料集拼接html字串顯示在介面上。優化思考 net專案中有個模組做統計功能,原先方法速度很慢,所以需要改進...
SQL Server 游標使用
游標概念 資料庫操作中我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。游標 cursor 是系統為使用者開設的乙個資料緩衝區,存放sql語句的執行結果。每個游標區都有乙個名字。使用者可以用sql語句逐一從游標中獲取記錄,並賦...
sqlserver游標使用
create procedure pk test as 宣告2個變數 declare o id nvarchar 20 declare a salary float 宣告乙個游標mycursor,select語句中引數的個數必須要和從游標取出的變數名相同 declare mycursor curso...