是否使用存儲過程更多的是在酒吧進行宗教或政治討論。
需要做的是明確定義您的應用程序層,而不是跨越這些邊界。與在數據庫之外進行查詢相比,存儲過程有幾個優點和缺點。
優點1:存儲過程是模塊化的。從維護角度看,這是一件好事。當您的應用程序出現查詢問題時,您可能會同意,對存儲過程進行故障排除要比隱藏在多行GUI代碼中的嵌入式查詢容易得多。
優點2:存儲過程是可調的。通過爲您的界面處理數據庫工作的過程,您無需修改GUI源代碼即可改進查詢的性能。可以對存儲過程進行更改 - 就連接方法,不同表格等而言 - 對前端界面透明。
優點3:存儲過程從客戶端抽象或分離服務器端函數。編寫GUI應用程序來調用過程比通過GUI代碼構建查詢要容易得多。
優點4:存儲過程通常由數據庫開發人員/管理員編寫。持有這些角色的人通常在編寫高效的查詢和SQL語句方面更有經驗。這使得GUI應用程序開發人員可以將他們的技能用於應用程序的功能和圖形演示文稿。如果你讓你的員工執行他們最適合的任務,那麼你最終會產生更好的整體應用。
考慮到這一切,有幾個缺點。
缺點1: 如果邏輯完全在存儲過程中實現,涉及廣泛的業務邏輯和處理的應用程序可能會給服務器造成過大的負載。這類處理的例子包括數據傳輸,數據遍歷,數據轉換和密集計算操作。您應該將這種類型的處理移動到業務流程或數據訪問邏輯組件,這是比數據庫服務器更具擴展性的資源。
缺點2: 不要把所有的業務邏輯放到存儲過程中。當您必須修改Sp語言的業務邏輯時,維護和應用程序的敏捷性成爲一個問題。例如,支持多個RDBMS的ISV應用程序不需要爲每個系統維護單獨的存儲過程。
缺點3: 編寫和維護存儲過程通常是一種並非所有開發人員都擁有的專業技能集。這種情況可能會在項目開發時間表中引入瓶頸。
我可能錯過了一些優點和缺點,隨時發表評論。
謝謝羅曼和你們所有人。我非常感謝你的幫助。看起來我有一些計劃要做。 – 2010-06-03 19:12:10