SQL 날짜 범위를 생성하는 효율적인 방법
데이터베이스 프로그래밍에서는 특정 날짜 범위 내에서 날짜 순서를 생성하는 것이 일반적인 작업입니다. 예를 들어, 2010년 1월 20일과 2010년 1월 24일 사이의 날짜를 쿼리합니다.
<code class="language-sql">SELECT ... AS days WHERE `date` BETWEEN '2010-01-20' AND '2010-01-24'</code>
예상 결과는 다음과 같습니다.
<code>days ---------- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24</code>
효율적인 하위 쿼리 솔루션
효율적인 해결책은 하위 쿼리를 사용하여 날짜 시퀀스를 생성하는 것입니다.
<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>
성능 고려 사항
이 솔루션은 쿼리 실행 시간이 0.0009초에 불과하여 성능이 매우 뛰어납니다. 10만 개의 날짜(약 274년)를 생성하더라도 쿼리 실행 시간은 0.0458초에 불과하다.
이식성
이 기술은 이식성이 뛰어나며 약간의 조정만으로 대부분의 데이터베이스 시스템에 적용할 수 있습니다.
위 내용은 SQL의 특정 범위 내에서 날짜 시퀀스를 효율적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!