在深入理解mysq之前,我們先理下一些簡單的問題
q:什麼是儲存過程?(stored procedure)
a:是一段寫好的sql**,特別的就是它是存在資料庫的目錄裡。所以外部程式可以直接呼叫資料庫裡面定義好的儲存過程,另外資料庫內部的觸發器(trigger)、或者其他儲存過程也可以呼叫它。
q:儲存過程有什麼好處?有什麼壞處?
a:先看看好處吧:
1、首先在效能上的提高,比起通過應用程式傳送sql語句給資料庫執行,讓資料庫自己內部執行儲存過程效率更高、速度更快(儲存過程將sql編譯好後存在資料庫目錄下);
2、儲存過程還減少了應用程式同伺服器自己的資訊互動頻率,可以想象在不是使用儲存過程的情況,應用程式需要傳送多條sql指令給伺服器,而使用儲存過程則只要一條呼叫儲存過程的語句,然後獲取需要的資料就ok了。
3、儲存過程重用性比較高,並且是透明的,因為儲存在資料庫裡面所以對任何應用來說都可以使用。新的應用只需要呼叫相應的儲存過程就可以得到相應的資料服務。
4、儲存過程也是種安全的做法,資料庫管理員可以對那些沒有許可權訪問資料庫中的**的應用,給他們使用儲存過程的許可權來獲得資料服務,可以看到這個 時候這些儲存過程好像我們程式設計裡面的」介面「這個概念。對於安全性要求很高的系統,例如銀行,基本上常用的操作都是通過儲存過程或者函式來進行的,這樣完 全對應用」隱藏「了**。
當然也有壞處:
1、儲存過程會使得資料庫占用的系統資源加大(cpu、memory),資料庫畢竟主要用來做資料訪問的,並不進行複雜的業務邏輯操作。
2、因為儲存過程依舊是sql,所以沒辦法像程式語言那樣寫出複雜業務邏輯對應的儲存過程。
3、儲存過程不容易進行除錯。
4、儲存過程書寫及維護難度都比較大。
了解這些優缺點對我們權衡使用儲存過程有很大的幫助
Mysql 儲存過程1
儲存過程的優勢 1,一般的sql命令在執行前需要解析 編譯前提準備過程,但是儲存 過程是事先完成了解析,編譯處理後儲存在資料庫的,執行時能減輕 資料庫負擔,提高執行效能。2,減輕網路負擔,之前的傳遞sql語句,變成現在的傳遞引數。3,防止對錶的直接訪問。4,可以減少大部分的程式 5,msyql5.0...
mysql儲存過程(1)
1 in引數的理解 delimiter cre atep roce dure sele ctus er1 inus erid int begi nsel ect from tuse rwhe reid us erid end create procedure selectuser1 in useri...
MySQL儲存過程 (1)
引數模式 in 該引數作為輸入,該引數呼叫傳入值 out 該引數作為輸出,該引數作為返回值 inout 該引數即可作為輸入,也可作為輸出,該引數即可呼叫傳入值,也可作為返回值 delimiter 設定結束標記,比如 delimiter 1 不帶引數儲存過程 delimiter create proc...