Effiziente Methode zum Generieren eines SQL-Datumsbereichs
Bei der Datenbankprogrammierung ist das Generieren einer Datumssequenz innerhalb eines bestimmten Datumsbereichs eine häufige Aufgabe. Fragen Sie beispielsweise die Daten zwischen dem 20. Januar 2010 und dem 24. Januar 2010 ab:
<code class="language-sql">SELECT ... AS days WHERE `date` BETWEEN '2010-01-20' AND '2010-01-24'</code>
Das erwartete Ergebnis ist:
<code>days ---------- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24</code>
Effiziente Unterabfragelösung
Eine effiziente Lösung besteht darin, eine Unterabfrage zu verwenden, um eine Datumssequenz zu generieren:
<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>
Leistungsüberlegungen
Diese Lösung ist äußerst leistungsfähig, mit einer Abfrageausführungszeit von nur 0,0009 Sekunden. Selbst bei der Generierung von 100.000 Daten (ca. 274 Jahre) beträgt die Ausführungszeit der Abfrage nur 0,0458 Sekunden.
Portabilität
Diese Technologie ist hochgradig portierbar und kann mit nur geringfügigen Anpassungen an die meisten Datenbanksysteme angepasst werden.
Das obige ist der detaillierte Inhalt vonWie kann ich in SQL effizient eine Folge von Datumsangaben innerhalb eines bestimmten Bereichs generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!