我用的是postgresql,發現同樣的邏輯,儲存過程的程式碼是c#的三分之一。因為儲存過程語言是為描述資料建立的,對於變數和資料的混合處理有天然優勢。再加上一些註釋,程式碼可讀性比c#更高。而且由於伺服器和資料庫是一次互動,執行更快,使用者體驗好,伺服器併發好。postgresql儲存過程支援斷點除錯的。當然我不建議幾千行的儲存過程。儲存過程的目的是為了執行速度更快,程式碼更簡潔。我也不認為簡單的增刪改查也用儲存過程。這些應該交給orm。儲存過程應該用同時滿足以下幾個條件時:1.使用者高頻使用這個功能 2.這個功能需要多次訪問資料庫
儲存過程的另一個好處是在編譯時就可以檢查sql語句的錯誤不用等執行。缺點是,當資料庫修改後,你如果不重新編譯儲存過程是無法知道程式中哪些地方需要修改欄位名。但是相比她帶來的好處,這一點可以忍受。另外orm也只是可以檢測欄位,但是儲存過程連語法都檢測了。
現代網際網路應用的基石是MySQL,而早期mysql沒有儲存過程,而且資料往往要分多個庫,搞儲存過程要一個個庫去更新,萬一漏了一個就會出問題。網際網路應用的邏輯相對沒有erp複雜,所以都不用儲存過程。但是現在是2019年了,mysql資料庫也支援分割槽表了,一個庫就能搞定很大資料量。儲存過程也支援了,適當使用儲存過程並無不妥。尤其是postgresql資料庫連斷點除錯都具備了,語法又那麼優雅。
所以我支援用儲存過程,但不能濫用,要好鋼用刀刃上
我用的是postgresql,發現同樣的邏輯,儲存過程的程式碼是c#的三分之一。因為儲存過程語言是為描述資料建立的,對於變數和資料的混合處理有天然優勢。再加上一些註釋,程式碼可讀性比c#更高。而且由於伺服器和資料庫是一次互動,執行更快,使用者體驗好,伺服器併發好。postgresql儲存過程支援斷點除錯的。當然我不建議幾千行的儲存過程。儲存過程的目的是為了執行速度更快,程式碼更簡潔。我也不認為簡單的增刪改查也用儲存過程。這些應該交給orm。儲存過程應該用同時滿足以下幾個條件時:1.使用者高頻使用這個功能 2.這個功能需要多次訪問資料庫
儲存過程的另一個好處是在編譯時就可以檢查sql語句的錯誤不用等執行。缺點是,當資料庫修改後,你如果不重新編譯儲存過程是無法知道程式中哪些地方需要修改欄位名。但是相比她帶來的好處,這一點可以忍受。另外orm也只是可以檢測欄位,但是儲存過程連語法都檢測了。
現代網際網路應用的基石是MySQL,而早期mysql沒有儲存過程,而且資料往往要分多個庫,搞儲存過程要一個個庫去更新,萬一漏了一個就會出問題。網際網路應用的邏輯相對沒有erp複雜,所以都不用儲存過程。但是現在是2019年了,mysql資料庫也支援分割槽表了,一個庫就能搞定很大資料量。儲存過程也支援了,適當使用儲存過程並無不妥。尤其是postgresql資料庫連斷點除錯都具備了,語法又那麼優雅。
所以我支援用儲存過程,但不能濫用,要好鋼用刀刃上