概述
游標是邪惡的!
在關系數據庫中,我們對於查詢的思考是面向集合的。而游標打破了這一規則,游標使得我們思考方式變為逐行進行.對於類C的開發人員來著,這樣的思考方式會更加舒服。
正常面向集合的思維方式是:
而對於游標來說:
這也是為什麼游標是邪惡的,它會使開發人員變懶,懶得去想用面向集合的查詢方式實現某些功能.
同樣的,在性能上,游標會吃更多的內存,減少可用的並發,占用寬帶,鎖定資源,當然還有更多的代碼量……
從游標對數據庫的讀取方式來說,不難看出游標為什麼占用更多的資源,打個比方:
當你從ATM取錢的時候,是一次取1000效率更高呢,還是取10次100?
我個人認為存在既是合理.歸結來說,學習游標原因我歸納為以下2點
1.現存系統有一些游標,我們查詢必須通過游標來實現
2.作為一個備用方式,當我們窮盡了while循環,子查詢,臨時表,表變量,自建函數或其他方式扔來無法實現某些查詢的時候,使用游標實現.
在T-SQL中,游標的生命周期由5部分組成