Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menjana Urutan Tarikh Dalam Julat Tertentu dalam SQL dengan Cekap?
Kaedah yang cekap untuk menjana julat tarikh SQL
Dalam pengaturcaraan pangkalan data, menjana jujukan tarikh dalam julat tarikh tertentu adalah tugas biasa. Contohnya, tanya tarikh antara 20 Januari 2010 dan 24 Januari 2010:
<code class="language-sql">SELECT ... AS days WHERE `date` BETWEEN '2010-01-20' AND '2010-01-24'</code>
Hasil yang dijangkakan ialah:
<code>days ---------- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24</code>
Penyelesaian subkueri yang cekap
Penyelesaian yang cekap ialah menggunakan subkueri untuk menjana urutan tarikh:
<code class="language-sql">SELECT a.Date FROM ( SELECT curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY AS Date FROM ( SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) AS a CROSS JOIN ( SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) AS b CROSS JOIN ( SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) AS c CROSS JOIN ( SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) AS d ) a WHERE a.Date BETWEEN '2010-01-20' AND '2010-01-24'</code>
Pertimbangan Prestasi
Penyelesaian ini sangat berprestasi, dengan masa pelaksanaan pertanyaan hanya 0.0009 saat. Malah menjana 100,000 tarikh (kira-kira 274 tahun), masa pelaksanaan pertanyaan hanya 0.0458 saat.
Kemudahalihan
Teknologi ini sangat mudah alih dan boleh disesuaikan dengan kebanyakan sistem pangkalan data dengan hanya pelarasan kecil.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Urutan Tarikh Dalam Julat Tertentu dalam SQL dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!