Maison >base de données >tutoriel mysql >Comment puis-je générer efficacement une séquence de dates dans une plage spécifique en SQL ?
Méthode efficace pour générer une plage de dates SQL
Dans la programmation de bases de données, générer une séquence de dates dans une plage de dates spécifique est une tâche courante. Par exemple, interrogez les dates entre le 20 janvier 2010 et le 24 janvier 2010 :
<code class="language-sql">SELECT ... AS days WHERE `date` BETWEEN '2010-01-20' AND '2010-01-24'</code>
Le résultat attendu est :
<code>days ---------- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24</code>
Solution de sous-requête efficace
Une solution efficace consiste à utiliser une sous-requête pour générer une séquence de dates :
<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>
Considérations relatives aux performances
Cette solution est extrêmement performante, avec un temps d'exécution des requêtes de seulement 0,0009 seconde. Même en générant 100 000 dates (environ 274 ans), le temps d'exécution de la requête n'est que de 0,0458 seconde.
Portabilité
Cette technologie est hautement portable et peut être adaptée à la plupart des systèmes de bases de données avec seulement des ajustements mineurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!