Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengisi Jadual Kalendar SQL Besar dengan Cekap?
Mengoptimumkan Populasi Jadual Kalendar SQL untuk Julat Tarikh Yang Luas
Mencipta jadual kalendar yang meliputi satu abad memberikan cabaran prestasi yang ketara. Penyelesaian sedia ada sering gagal apabila berurusan dengan set data yang begitu besar. Kaedah yang dipertingkatkan ini menggunakan ungkapan jadual biasa (CTE) rekursif untuk penjanaan dan sisipan yang cekap.
Metodologi:
Inti pendekatan ini ialah CTE rekursif yang membina urutan tarikh secara berulang.
<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 ini bermula dengan 1 Januari 1901 dan secara rekursif menambah hari sehingga 31 Disember 2000 (laraskan klausa WHERE
untuk julat tarikh yang berbeza).
Setelah jujukan tarikh dijana, satu pernyataan INSERT
mengisi jadual sasaran.
<code class="language-sql">INSERT INTO CalendarTable (CalendarDate) SELECT CalendarDate FROM Calendar;</code>
Faedah Pendekatan ini:
Ringkasan:
Kaedah yang diperhalusi ini menyediakan penyelesaian yang sangat cekap untuk mengisi jadual kalendar SQL merentas julat tarikh yang luas, menangani had prestasi yang dihadapi dengan pendekatan alternatif. Penggunaan CTE rekursif dan sisipan pukal meningkatkan kelajuan dan kebolehskalaan dengan ketara.
Atas ialah kandungan terperinci Bagaimana untuk Mengisi Jadual Kalendar SQL Besar dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!