❶ 項目中所有sql語句全用存儲過程寫,例如select * from A最簡單的也用存儲過程,是否能優化性能
看情況的,存儲過程會緩存數據,如果查詢條件經常變動的話,簡單的SQL語句還是不要使用存儲過程比較好,會增加伺服器壓力的,反之,對於經常使用的一些語句,如果基本上都沒怎麼變動的話,用存儲過程應該是會好點的
❷ 用存儲過程能提高性能嗎,為什麼
可以,在資料庫層的效率比在程序中高
❸ 用存儲過程會使程序的性能更好么
存儲過程使用不麻煩,你把存儲過程寫在資料庫里,使用強類型DataSet作數據訪問層。自己寫一個業務邏輯層,然後再應用層調用。這樣直接訪問數據的代碼都是VS給你生成的,保證安全性,正確性和代碼規范性。
你覺得存儲過程使用麻煩主要是因為你不會使用。
上面幾位都說了,存儲過程可以提高性能,減少伺服器間的數據交換,防止Sql注入攻擊,等等,既然有這些優勢,微軟怎麼可能讓它使用起來很麻煩呢?
❹ SQL SERVER 一個資料庫中使用大量的存儲過程,會影響性能嗎
一、在SQL Server中存儲過程不會影響性能。
1、只會大大的減輕伺服器的壓力,而不會增加,只有不合理的存儲過程才會造成伺服器性能下降的惡果。一個大型的資料庫,一般存儲過程也不會超過幾千個,對當前的資料庫及它依附的硬體來說,這點兒負載是大象身上的老鼠,負載基本可以怱略不計。
2、但是,存儲過程是批量的SQL語句的合成,如果設計上混亂,引發死循環、死鎖、大范圍查詢、臨時表沒有及時清理釋放等問題的情況下,是會嚴重影響伺服器性能的,但這根子不在存儲過程上,而在於存儲過程的設計上。錯誤的SQL代碼指揮伺服器,無論它的形式是存儲過程,還是客戶端及時發向資料庫的請求,都會使伺服器出現問題。
二、相關擴展
1、在當前,針對資料庫的編程設計,沒有存儲過程是不可想像的,這就象某個公司的大型貨品倉庫中沒有倉庫保管員一樣,所有的貨品進出都得進貨員或銷售員去臨時取放,會嚴重降低工作效率。
2、存儲過程在資料庫中無論是否編譯好,其效率都要比客戶端臨時向資料庫發送指令調數據來得要高,因為至少減少了發向伺服器的指令的量。況且很多的中間值、臨時值如果不通過存儲過程來實現的話,就只能先全取到客戶端,這樣會大大增加網路負擔與伺服器的負鉭。
3、正如微軟所說,存儲過程來實現,可以使得很多中間量不必傳入到客戶上,客戶端只能得到需要的結果,所以同時可以提高安全。
❺ 存儲過程的優缺點
存儲過程的優缺點:
存儲過程優點:
1.由於應用程序隨著時間推移會不斷更改,增刪功能,T-SQL過程代碼會變得更復雜,StoredProcere為封裝此代碼提供了一個替換位置。
2.執行計劃(存儲過程在首次運行時將被編譯,這將產生一個執行計劃--
實際上是
Microsoft
SQL
Server為在存儲過程中獲取由
T-SQL
指定的結果而必須採取的步驟的記錄。)緩存改善性能。
但sql
server新版本,執行計劃已針對所有
T-SQL 批處理進行了緩存,而不管它們是否在存儲過程中,所以沒比較優勢了。
3.存儲過程可以用於降低網路流量,存儲過程代碼直接存儲於資料庫中,所以不會產生大量T-sql語句的代碼流量。
4.使用存儲過程使您能夠增強對執行計劃的重復使用,由此可以通過使用遠程過程調用
(RPC)
處理伺服器上的存儲過程而提高性能。RPC
封裝參數和調用伺服器端過程的方式使引擎能夠輕松地找到匹配的執行計劃,並只需插入更新的參數值。
5.可維護性高,更新存儲過程通常比更改、測試以及重新部署程序集需要較少的時間和精力。
6.代碼精簡一致,一個存儲過程可以用於應用程序代碼的不同位置。
7.更好的版本控制,通過使用
Microsoft
Visual
SourceSafe
或某個其他源代碼控制工具,您可以輕松地恢復到或引用舊版本的存儲過程。
8.增強安全性:
a、通過向用戶授予對存儲過程(而不是基於表)的訪問許可權,它們可以提供對特定數據的訪問;
b、提高代碼安全,防止
SQL注入(但未徹底解決,例如,將數據操作語言--DML,附加到輸入參數);
c、SqlParameter
類指定存儲過程參數的數據類型,作為深層次防禦性策略的一部分,可以驗證用戶提供的值類型(但也不是萬無一失,還是應該傳遞至資料庫前得到附加驗證)。
存儲過程缺點:
1.如果更改范圍大到需要對輸入存儲過程的參數進行更改,或者要更改由其返回的數據,則您仍需要更新程序集中的代碼以添加參數、更新
GetValue()
調用,等等,這時候估計比較繁瑣了。
2.可移植性差
由於存儲過程將應用程序綁定到
SQL
Server,因此使用存儲過程封裝業務邏輯將限制應用程序的可移植性。如果應用程序的可移植性在您的環境中非常重要,則將業務邏輯封裝在不特定於
RDBMS
的中間層中可能是一個更佳的選擇。
3.
大量採用存儲過程進行業務邏輯的開發致命的缺點是很多存儲過程不支持面向對象的設計,無法採用面向對象的方式將業務邏輯進行封裝,從而無法形成通用的可支持復用的業務邏輯框架。
4.代碼可讀性差,相當難維護.
❻ mysql存儲過程能優惠性能嗎
這個性能問題很多都是相對的,譬如如果你不用存儲過程,那應用伺服器和資料庫伺服器的交互就會增多,這樣也導致性能降低。一般而言,存儲過程的使用降低應用的負載,更多的要考慮使用的合理性。譬如觸發器過多也會影響你操作表的速度,因而你應該根據系統自身情況去分析設計