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
Lepaskan: 2024-12-30 16:56:10
asal
946 orang telah melayarinya

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 
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan