【TSQL】子查詢VS CTE 產品結構表 (BOM)多階查詢? HOW....

  • 6292
  • 0

摘要:【TSQL】子查詢VS CTE 產品結構表 (BOM)多階查詢? HOW....

 

前言:此技術僅適用SQL2005以上版本
 
 
 
Lewis Yang 老師在上課的時候回答了我這個小小的問題^^
但是一語點醒夢中人!!!!!!
 
其實在問問題之前我曾經試過自己先把全部子件都展開,
但是資料量整個大爆炸阿阿阿XDDD
EXCEL每開必當...>"<
 
join語法很明顯是不行的
迴圈...則是根本沒有停止點= ="
 
子查詢。。。
 
 
什麼是CTE?
一般資料表運算式CTE (Common Table Expression) 
 
 
(以下來自KingKong Bruce記事 大大整理的重點^^)
http://blog.kkbruce.net/2011/01/t-sql-common-table-expression-cte.html#.UU1upxeotvA
 
可以把CTE當成"Temp View"
如果在Store Procedure使用CTE,會造成每次執行都會re-compiler,效能低落
資料集未以Table存放於Database時,適合用CTE
View通常用來分解大型查詢,如果只用一次,那View不是好辦法
子查詢只能從所在的"陳述式"存取,如果有多個相同的子查詢,必須含重覆程式碼,難閱讀及維護
CTE能在同批次下,重覆使用(像View一樣)
CTE只能用於其後第一個陳述式(Select, Insert, Delete, Update),此陳述式可多次取用CTE
CTE後面可接另一個CTE,使用逗號(,)
 

 

 

 

 

實際檢查

 

 

 

黑暗執行緒大大

http://blog.darkthread.net/post-2007-05-23-sql-2005-t-sql-enhancement-common-table-expression.aspx

MSDN

http://msdn.microsoft.com/zh-tw/magazine/cc163346.aspx