広範囲の日付範囲に対する SQL カレンダー テーブルの入力の最適化
1 世紀をカバーするカレンダー テーブルを作成すると、パフォーマンスに重大な課題が生じます。 このような大規模なデータセットを扱う場合、既存のソリューションでは不十分なことがよくあります。 この改良された方法では、再帰的共通テーブル式 (CTE) を利用して、効率的な生成と挿入を実現します。
方法論:
このアプローチの核心は、一連の日付を繰り返し構築する再帰的 CTE です。
<code class="language-sql">WITH Calendar AS ( SELECT CAST('1901-01-01' AS DATE) AS CalendarDate, 1 AS Level UNION ALL SELECT DATEADD(DAY, 1, CalendarDate), Level + 1 FROM Calendar WHERE Level < 36525 -- Number of days in 100 years (approx.) )</code>
この CTE は 1901 年 1 月 1 日から始まり、2000 年 12 月 31 日まで再帰的に 1 日追加されます (日付範囲が異なる場合は WHERE
句を調整してください)。
日付シーケンスが生成されると、単一の INSERT
ステートメントによってターゲット テーブルにデータが設定されます。
<code class="language-sql">INSERT INTO CalendarTable (CalendarDate) SELECT CalendarDate FROM Calendar;</code>
このアプローチの利点:
概要:
この洗練された方法は、広範囲の日付範囲にわたって SQL カレンダー テーブルにデータを設定するための非常に効率的なソリューションを提供し、代替アプローチで発生するパフォーマンスの制限に対処します。 再帰的 CTE と一括挿入の使用により、速度とスケーラビリティが大幅に向上します。
以上が大規模な SQL カレンダー テーブルに効率的にデータを入力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。