はじめに
補助数値テーブルは、特定の 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>
永続的な数え表の利点
永続的なカウント テーブルの作成には事前の検討が必要ですが、リストが頻繁に使用される場合に最高のパフォーマンスが得られます。テーブルのサイズを適切に設定することで、メモリに影響を与えることなく最適なパフォーマンスを得るためにテーブルをキャッシュできます。
結論
数値のリストを作成する適切な方法の選択は、特定の使用パターンによって異なります。大規模で頻繁に使用されるリストの場合、従来のクロス結合テーブルのアプローチが最高のパフォーマンスを提供します。 1 回限りのリストや使用頻度が低いリストの場合は、永続的なカウント シートを作成することをお勧めします。
以上がSQL で数値リストを生成するための最も効率的なユーザー定義関数を作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。