mysql 중복제거 쿼리 질문입니니다.
본문
sql_query("DELETE A FROM g5_write_db A, g5_write_db B WHERE A.wr_id > B.wr_id AND A.wr_1 = B.wr_1");
전화번호를 ajax로 중복체크하였으나, 그럼에도 글을 남기는 사람들이 있더라구요ㅡ,,
그래서
모든글이 써지고 해당 쿼리를 통해 중복번호를 지우고 최신 번호만 남겼었는데요..
db가 1000개가 넘어가니 시간이 상당히 오래 걸리네요....
이부분을 최적화 할수 있는 방법이 있을까요? ㅠㅠ
!-->
답변 1
수행될때
full search 를 하기때문에 느려집니다.
빠르게 개선하려면
부분쿼리로 변경하되
조건이 index가 걸리도록 변경해야 빨라집니다.
먼저 g5_wirte_db 테이블에
wr_1 에 인덱스를 생성쿼리를 실행하시고,
create index write_db_wr1 on g5_write_db(wr_1);
위의 쿼리를 아래와 같이 변경해보세요
DELETE A FROM g5_write_db A
where exists (select 'x' from g5_write_db B
WHERE A.wr_id > B.wr_id
AND A.wr_1 = B.wr_1);
답변을 작성하시기 전에 로그인 해주세요.