Rumah >pangkalan data >tutorial mysql >Bolehkah Penggabungan Selang Tarikh Bertindih Dioptimumkan untuk Kecekapan yang Lebih Besar?

Bolehkah Penggabungan Selang Tarikh Bertindih Dioptimumkan untuk Kecekapan yang Lebih Besar?

DDD
DDDasal
2024-12-30 16:56:10976semak imbas

Can Merging Overlapping Date Intervals Be Optimized for Greater Efficiency?

Gabung Selang Tarikh Bertindih

Masalah:

Bolehkah proses penggabungan selang tarikh bertindih jadilah dipertingkatkan?

Perbincangan:

Penyelesaian yang dibentangkan dalam siaran asal adalah mudah, tetapi mungkin terdapat kaedah yang lebih cekap.

Penyelesaian:

Satu penyelesaian alternatif mendapat inspirasi daripada siaran "Gabungkan masa tarikh bertindih untuk kembali rekod julat bertindih tunggal."

Penyelesaian ini menggunakan subkueri untuk mengenal pasti tarikh tamat maksimum dalam setiap selang dan kemudian melakukan operasi cantum sendiri untuk menggabungkan selang bertindih:

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 

Keputusan:

Menggunakan penyelesaian ini, keputusan berikut adalah diperolehi:

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

Atas ialah kandungan terperinci Bolehkah Penggabungan Selang Tarikh Bertindih Dioptimumkan untuk Kecekapan yang Lebih Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn