ホームページ > データベース > mysql チュートリアル > 重複する日付間隔の結合を最適化して効率を高めることはできますか?

重複する日付間隔の結合を最適化して効率を高めることはできますか?

DDD
リリース: 2024-12-30 16:56:10
オリジナル
944 人が閲覧しました

Can Merging Overlapping Date Intervals Be Optimized for Greater Efficiency?

重複する日付間隔を結合する

問題:

重複する日付間隔を結合するプロセスは実行できますか?なれ改善されましたか?

ディスカッション:

元の投稿で示された解決策は簡単ですが、より効率的な方法が利用できる可能性があります。

解決策:

代替ソリューションの 1 つは、「重複する日時を結合して単一の値を返す」という投稿からインスピレーションを得ています。重複する範囲レコードです。"

このソリューションは、サブクエリを利用して各間隔内の最大終了日を特定し、自己結合操作を実行して重複する間隔を結合します:

SELECT 
       s1.StartDate,
       --t1.EndDate 
       MIN(t1.EndDate) AS EndDate
FROM @T s1 
INNER JOIN @T t1 ON s1.StartDate <= t1.EndDate
  AND NOT EXISTS(SELECT * FROM @T t2 
                 WHERE t1.EndDate >= t2.StartDate AND t1.EndDate < t2.EndDate) 
WHERE NOT EXISTS(SELECT * FROM @T s2 
                 WHERE s1.StartDate > s2.StartDate AND s1.StartDate <= s2.EndDate) 
GROUP BY s1.StartDate 
ORDER BY s1.StartDate 
ログイン後にコピー

結果:

このソリューションを使用すると、次の結果が得られます:

StartDate EndDate
2010-01-01 2010-06-13
2010-06-15 2010-06-25
2010-06-26 2010-08-16
2010-11-01 2010-12-31

以上が重複する日付間隔の結合を最適化して効率を高めることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート