난 진자 평범한 코딩보다 sql이 제일 순수한 머리 쓰는 것 같음
대갈빡 굴리는 중이긴 한데 아직 잘 모르겠다.
일단 table은
(
bocco_user_id integer not null,
user_setlist_number integer not null,
user_setlist_name varchar(50) not null,
start_date date,
end_date date,
is_mon boolean not null,
is_tue boolean not null,
is_wed boolean not null,
is_thu boolean not null,
is_fri boolean not null,
is_sat boolean not null,
is_sun boolean not null,
is_week1 boolean not null,
is_week2 boolean not null,
is_week3 boolean not null,
is_week4 boolean not null,
is_week5 boolean not null,
displ_no integer not null,
tenant varchar(256),
creation_ts timestamp not null,
update_ts timestamp not null,
version integer not null,
constraint user_setlist_pk
primary key (bocco_user_id, user_setlist_number)
);
여기서 화면상에서 건너오는 json이 있는데
대략 bocco_user_id : 1
user_setlist_number : 2
뭐 이런 식임.
이걸로 저 테이블에 데이터를 넣을 건데
데이터에 넣기 전에 sql문으로
start_date, end_date 과 기간이 겹치는 것을 추출 (예를 들어 json의 start_date가 2022-07-01, end_date가 2022-08-01일 때 테이블 내부에 start_date: 2022-07-20, end_date: 2022-09-08이면 겹치는 걸로 처리)
플러스
주가 겹치고(is_week1, is_week2이런 것이 true이고) 동시에 요일이 겹치면 (is_mon등이 true) 중복 처리를 해서 입력이 안 되도록 하고 싶음.
그를 위해서 sql문을 작성하고 count같은 걸로 예를 들어 1이상이면 exception날리는 식으로 하고 싶은 것 같은데
대충 데이터 먼저 떠와서 백엔드에서 filter로 대충 주물럭거리고 처리하면 존나 쉬울 것 같은 걸 sql한 방으로 다 할 수 있지 않냐고 팀장이 씨발 우기는 중임
이거 sql문 어케 만들어야함
sql로 하면 내부 호출로 인한 성능 저하일어나는데 왜 해야되냐고 물어보셈
sql에 부하주는거 안좋은데
ㅇㅋ 내일 그대로 얘기하겠음. 저 기능 사실 백엔드에선 이미 구현 끝나서 sql짜기 싫었는데 성능 저하 일어나면 주장하기 좋네
와 이게 회삿일이냐 ㄷㄷ하네
이런거 시키면 얼마만에 sql 만들어야 하냐 난 하루 쟁일 걸릴듯
내가 제대로 이해한게 맞으면 성능저하 일어날 정도 쿼리는 아니고, 지저분하게 백엔드 로직으로 처리하는 것보다 sql로 한방에 하는게 맞는걸로 보임
해당 댓글은 삭제되었습니다.
시작일 종료일에서 전반적인 메시지 출력 기간을 정하고 그 안에서 요일별로 내놓는 메시지를 따로 정하기 위해서요
음 그럼 일단 최대한 생각해보겠음... 혹여나 능력자분 계신다면 조언 부탁...
쿼리 1시간 컷 가는
원하는 바가 맞으신지는 모르겠지만
겹치는 주가 있으면 count를 1이상 반환하는 select 쿼리를 서브쿼리로 두고 insert into select list 파라미터1 list 파라미터2 ... from dual where 1 = (count 서브쿼리) 이런 방식으로 하는건 안될까요? 이제 취직한 초보의 답변이였습니다.