Neo's Blog

首頁 相本 討論 書籤

分類目錄
本站日誌 (51)
碎碎唸啦 (173)
網站架設 (84)
程式設計 (161)
軟體使用 (69)
電子商務 (126)
經營奇想 (48)
基金理財 (11)
聰明消費 (87)
電影心得 (47)
開放原碼 (16)
工作記錄 (2)
毛毛小記 (9)
就是不同 (2)




歷史資料
 




June 09, 2005
[SQL Server] 利用自訂函數簡化指令及提升軟體效能

假設有一個表單叫 VIP ,裡面存放著二個欄位:

CustomerId varchar(5) VIP 會員編號
ReferCustomerId varchar(5) 推薦人的會員編號

CustomerId 、ReferCustomerId 會員編號是參照到 Customer 的表單:

Id varchar(5) 會員編號
Name varchar(50) 會員姓名

假設有100萬個會員,而我們要產生以下四個欄位的報表:

[VIP 會員編號]、[VIP 會員姓名]、[推薦人的會員編號]、[推薦人的會員姓名]

你會怎麼做呢?

如果只是一般的查詢倒可以在程式裡面寫一個像 getEmployeeName(Id) 的函式,再用迴圈跑起來:

 do until rs.EOF
   print  getEmployeeName(rs.Fields("CustomerId").Value)
   print  getEmployeeName(rs.Fields("ReferCustomerId").Value)
   rs.MoveNext
 loop

這種做法的好處是程式可攜性高,換成任何一個資料庫都可以用。但是在上百萬筆的迴圈下,程式的時間都花在開啟多個連線查詢會員姓名,而完全無法發揮料庫的效能。

這時就要思考如何只透過一個 SQL Command 來完成這個報表。

當然方法有很多種,包括現在我們要介紹的 SQL Server 自訂函數功能。

自訂函數最大的好處可以讓 SQL Command 就像在寫程式一樣,不但可以大量簡化 SQL Command,也可以使邏輯更為清楚。

我們現在來寫一個 getEmployeeName(Id) 的 SQL Server 自訂函數版本:

20050609_01.gif

完成後便可應用在產生報表上,SQL Command 可以這樣下:

20050609_02.gif

藉由這個例子可以了解自訂函數的便利性,然而在商業用途上的應 用,欄位可不會只有這四個,尤其在有大量 Code Table Schema 及遇到複雜邏輯的時候,使用 SQL Server 的自訂函數可以加速程式的開發,也能降低邏輯上的錯誤,實在是非常便利好工具。

 
由 Neo 發表於 June 9, 2005 12:24 AM 收進你的MyShare個人書籤  

neo:
thanks ,you give us more information to learn well SQL

can you tell us about SQL table index information?


ping 發表於 February 8, 2006 11:59 AM

ping:
謝謝你的留言。不過最近很忙,只能 等有空的時候再說囉。Orz


Neo 發表於 February 8, 2006 06:25 PM
發表迴響  
(*星號開頭為必填欄位)











(請輸入您看到的數字,看不到請按右鍵->顯示圖片)


記住我的資訊?







Copyright 2005 Neo's Blog All rights reserved.