다음 표가 있습니다.INSERT 쿼리에서 WHERE BETWEEN 절을 어떻게 사용할 수 있습니까?
이 테이블은 지나치게 자세히 설명하지 않고 모든 전자 요청과 광고 노출을 전국의 전자 스크린에 기록합니다. 이 테이블은 또한 보고서를 생성하는 데 사용되며 + 5 천만 개의 레코드로 구성됩니다.
현재 보고서는 created_at 시간 소인에서 필터링됩니다. 5 천만 개가 넘는 레코드를 사용하면 created_at 열에 대한 인덱스를 사용해도 쿼리가 느려질 것이라고 상상할 수 있습니다. 보고서는 시스템의 UI에서 데이터를 요청할 날짜를 선택하여 생성됩니다.
년, 월 및 일 열은 방금보고를보다 효율적으로 만들기 위해 추가 한 새로운 열입니다. 날짜에 대해 색인을 작성하는 대신 시스템에 1 년, 1 개월 및 1 일의 모든 별도의 값을 색인화합니다.
새로 추가 된 열은 여전히 비어 있습니다. created_at 열이 두 날짜 사이에있는 값을 삽입하는 쿼리를 실행하려고합니다. 예 :
INSERT INTO ad (year) VALUES (2016) WHERE created_at BETWEEN '2016-01-01 00:00:00' AND '2016-12-31 23:59:59';
물론 이것은 작동하지 않습니다. 인터넷에서 INSERT 문이 WHERE BETWEEN 절을 사용하는 부분을 찾지 못하는 것 같습니다. 또한 하위 쿼리 및 WITH 절을 사용하여 generate_series를 사용하여 2012 년과 2020 년 사이에 일련의 연도를 생성했습니다. 그것 모두는 잘 풀리지 않았다.
는'INSERT' 새로운 행을 삽입), 당신은에'UPDATE' 기존 행을 원한다. – klin