引言
輔助數位表可以提高某些SQL查詢的效率。這些表可以是固定大小的,也可以是動態產生的。本文重點介紹如何建立一個用於動態產生數字清單的最佳使用者自訂函數。
為什麼遞迴CTE不是最佳選擇
流行的遞歸CTE方法雖然可以「相當有效率」地產生數字,但對於大型且頻繁使用的清單來說,它實際上並非最佳選擇。效能測試表明,與其他方法相比,它的持續時間、CPU使用率和記憶體壓力都較高。
最佳方法:傳統的交叉連接表
對於大型數字列表,傳統的交叉連接表方法始終優於其他技術。它可以單次通過生成列表,並且內存開銷最小。
<code class="language-sql">SELECT TOP (1000000) ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS N INTO #Tally3 FROM Master.sys.All_Columns ac1 CROSS JOIN Master.sys.ALL_Columns ac2;</code>
永久計數表的好處
雖然建立永久計數表需要預先考慮,但如果頻繁使用該列表,它可以提供最佳效能。透過適當調整表的大小,可以將其快取以獲得最佳效能,而不會影響記憶體。
結論
選擇建立數字清單的正確方法取決於特定的用法模式。對於大型且頻繁使用的列表,傳統的交叉連接表方法可提供最佳效能。對於一次性或較少使用的列表,建議建立永久計數表。
以上是如何建立最有效的使用者定義函數來在 SQL 中產生數字列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!