存储过程和SQL语句比较【转】
做為SQL存儲過程和.NET的新手,下面的指導還是很有用的,自己這一段剛剛接觸這些東西,搜集了一些相關的東西,能使新手較容易上手,當然啦,要精通和熟練應用,還是要看更多更深的資料的,高手請不要見笑。
以下內容均來自網絡,只供參考學習:
--------
存儲過程與SQL語句的恩怨情仇
程序員說:存儲過程還是SQL語句,這是一個問題。
江 湖現在有三個流派,一個是SQL語句流的,崇尚使用SQL語句,一派是存儲過程派的,崇尚用存儲過程說話,還有一派是中庸派的,講求和諧,所以也就前兩派 吵得厲害,中庸派的看熱鬧。現在SQL派的有Nhibernate為首的眾多ORM助陣,最近風生水起比較得意,存儲過程派也有自己的殺手秘籍,兩派互不 相讓,爭斗由來已久。
存儲過程派的追求速度,所謂天下無功無堅不破,唯快不破,這也是存儲過程派的人行走江湖的最大本錢。之前存儲過程派的攻擊SQL語句派的還有一個秘籍就是安全,不過現在都沒人用連接String的動態SQL的了,這招也就失效了。
SQL語句派是資格很老的流派,但是新手居多,老資格很多投奔敵營存儲過程派了。Java幫的人很多都是SQL語句派的,而存儲過程派的以微軟幫的居多。
不 過存儲過程派也有軟肋,可移植性就是其一,還有一點就是可擴展性,因為一般大型的Web應用程序都是多Web服務器,然后用雙數據庫服務器做雙機熱備,其 中一臺開機,但是是閑置的,這里只是解決單點故障的問題,但是形成了多Web應用服務器,單數據庫服務器的情況,如果所有的運算都用存儲過程實現,那么會 造成數據庫服務器負擔過重,而Web服務器負荷不足的情況,而擴展數據庫服務器的話就會非常的麻煩,而且投資較大,程序也需要改,而投資Web服務器就相 對便宜而且擴容更加簡單。
人在江湖漂哪有不挨刀,所以中庸一點比較保險,我比較傾向于用把較多的負擔放到程序里來,而降低數據庫得負擔,因為只要 數據庫扛得住,再增加Web服務器那是比較容易的,但是一旦數據庫服務器扛不住了我們就只有哭了。一般報表阿,還有一些結果集比較復雜的我就用存儲過程來 包裝,一般的查詢和CUID操作我都是找個ORM來搞定。
1)從部署上看,存儲過程要比sql難
2) 從性能看,存儲過程要比SQL高
3) 從安全性將,存儲過程比SQL防注入
過程可以減少網絡數據傳輸量,把計算都放在服務器上???
????
前端程序可以直接訪問數據庫的表,可以直接用SQL語言直接對數據庫的表進行讀寫操作;???
????
?為安全,可以編程,使用存儲過程進行數據表的讀寫操作,而前端程序直接訪問這些存儲過程,而不是數據庫的表;???
????
更安全的方法是:在前端程序和數據庫之間,增加數據庫訪問層;前端將數據的讀寫請求提交給中間層,有中間層與數據庫連接進行數據庫的實際操作,將結果送給前端,這種方式可以避免前端機器直接連接到數據庫的可能,數據庫更安全。
轉載于:https://www.cnblogs.com/xianchen/archive/2011/03/08/1977658.html
總結
以上是生活随笔為你收集整理的存储过程和SQL语句比较【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Blender 2.42
- 下一篇: MySQL 当记录不存在时insert,