SQL을 사용하여 주어진 평일의 항목을 선택하려면 어떻게해야합니까?
-
03-07-2019 - |
문제
이 쿼리를 사용하여 월요일에 날짜와 함께 모든 주문을 선택할 수 있습니다.
SELECT * from orders WHERE strftime("%w", date)="1";
그러나 내가 아는 한, 이것은 모든 행과 마찬가지로 인덱스를 사용하여 속도를 높일 수 없습니다. strftime
계산해야합니다.
저장된 주간에 추가 필드를 추가 할 수는 있지만 피하고 싶습니다. 색인을 사용하는 솔루션이 있습니까? 아니면 내가 틀렸고이 쿼리가 실제로 잘 작동합니까? (결과를 계산하기 위해 모든 행을 통과 할 필요는 없습니다.)
해결책
네가 원한다면 모두 월요일에는 현장이나 순차적 스캔이 필요합니다. 당신이 할 수있는 일은 예를 들어 1 년 이내에 월요일에 실제 날짜를 계산하는 것입니다. 조건 WHERE date IN ('2009-03-02', '2009-02-23', ...)
인덱스를 사용합니다
다른 팁
또는 Vartec의 제안에 대한 대안으로, 연중 매일 날짜와 일일 이름으로 만 구성된 달력 테이블을 구성한 다음이 테이블에 대해 가입하여 쿼리를 수행하십시오.
제휴하지 않습니다 StackOverflow