Skip to content

공지사항

해싸 검색 속도 개선

조회 수 2,442 추천 수 0



검색 쿼리를 최적화 했습니다.


알아들을 만한 내용은 아니지만, 기록으로 남기기 위해 작성


증상:

  • 해싸 검색으로 인한 DB부하
  • REGEXP 검색은 인덱스를 타지않고 LIKE 보다 무거운데, LIKE 가능한 부분까지 REGEXP 검색하고 있음.


패치:

  • LIKE/REGEX 절을 마지막에 처리하기 - php 단에서 push 대신 array_unshift 함수로 조정
  • REGEX 보다 LIKE 선행 (performance)
  • 항상 REGEX 쓰던 것을 LIKE 가능한 경우 LIKE 대체


테스트 검색어: 80-체라 10패 마나 매|레


조건

Array

(

    [0] => (options LIKE '%매%' OR options LIKE '%레%')

    [1] => options LIKE '%체라%'

    [2] => options LIKE '%10패%'

    [3] => options LIKE '%마나%'

    [4] => options REGEXP '(^|[^0-9])(8[0-9]|9[0-9]|[1-8][0-9]{2}|9[0-8][0-9]|99[0-9])체라'

    [5] => options REGEXP '(^|[^0-9])10패'

)


sql

SELECT * FROM xe_d2_bot_a1s WHERE (options LIKE \'%매%\' OR options LIKE \'%레%\') AND options LIKE \'%체라%\' AND options LIKE \'%10패%\' AND options LIKE \'%마나%\' AND options REGEXP \'(^|[^0-9])(8[0-9]|9[0-9]|[1-8][0-9]{2}|9[0-8][0-9]|99[0-9])체라\' AND options REGEXP \'(^|[^0-9])10패\' ORDER BY price=0,price ASC LIMIT 100


더 이상 % 기호 사용하지 않는데, 예전에 % 적용된 데이터 처리:

#SELECT * FROM `xe_d2_bot_a1s` WHERE `options` REGEXP '%';


UPDATE xe_d2_bot_a1s SET options = REPLACE(options, '%중감', '중감') WHERE `options` REGEXP '%중감';

UPDATE xe_d2_bot_a1l SET options = REPLACE(options, '%중감', '중감') WHERE `options` REGEXP '%중감';


UPDATE xe_d2_bot_a1s SET options = REPLACE(options, '%마돌', '마돌') WHERE `options` REGEXP '%마돌';

UPDATE xe_d2_bot_a1l SET options = REPLACE(options, '%마돌', '마돌') WHERE `options` REGEXP '%마돌';


UPDATE xe_d2_bot_a1s SET options = REPLACE(options, '%파뎀', '파뎀') WHERE `options` REGEXP '%파뎀';

UPDATE xe_d2_bot_a1l SET options = REPLACE(options, '%파뎀', '파뎀') WHERE `options` REGEXP '%파뎀';


UPDATE xe_d2_bot_a1s SET options = REPLACE(options, '%콜뎀', '콜뎀') WHERE `options` REGEXP '%콜뎀';

UPDATE xe_d2_bot_a1l SET options = REPLACE(options, '%콜뎀', '콜뎀') WHERE `options` REGEXP '%콜뎀';


UPDATE xe_d2_bot_a1s SET options = REPLACE(options, '%라뎀', '라뎀') WHERE `options` REGEXP '%라뎀';

UPDATE xe_d2_bot_a1l SET options = REPLACE(options, '%라뎀', '라뎀') WHERE `options` REGEXP '%라뎀';


UPDATE xe_d2_bot_a1s SET options = REPLACE(options, '%최대마나', '최대마나') WHERE `options` REGEXP '%최대마나';

UPDATE xe_d2_bot_a1l SET options = REPLACE(options, '%최대마나', '최대마나') WHERE `options` REGEXP '%최대마나';


UPDATE xe_d2_bot_a1s SET options = REPLACE(options, '%추가어레', '추가어레') WHERE `options` REGEXP '%추가어레';

UPDATE xe_d2_bot_a1l SET options = REPLACE(options, '%추가어레', '추가어레') WHERE `options` REGEXP '%추가어레';


UPDATE xe_d2_bot_a1s SET options = REPLACE(options, '%3체라', '3체라') WHERE `options` REGEXP '%3체라';

UPDATE xe_d2_bot_a1l SET options = REPLACE(options, '%3체라', '3체라') WHERE `options` REGEXP '%3체라';


UPDATE xe_d2_bot_a1s SET options = REPLACE(options, '%5체라', '5체라') WHERE `options` REGEXP '%5체라';

UPDATE xe_d2_bot_a1l SET options = REPLACE(options, '%5체라', '5체라') WHERE `options` REGEXP '%5체라';


이거 패치하느라 팀피 쳐발림 ㅋㅋ


디아블로2 d2nt

가입인사 작성 후 다운로드, 게시글/댓글 등록이 가능합니다.
가입인사 게시판에 작성한 내용은 자기소개글로 자동 등록됩니다.
댓글78

공지사항

번호 제목 글쓴이 날짜 조회
공지 게시판 푸시 알림 / 통합 앱 서비스 31 file 트디개발자 2023.09.20 852.5k
공지 반복적으로 다운로드할 시 포인트가 부족할 수 있습니다. 325 우녕자 2014.12.12 42.7k
> 해싸 검색 속도 개선 78 우녕자 2015.02.10 2.4k
18 채팅방이 추가되었습니다. 48 우녕자 2015.02.07 2.0k
17 메일 서버 오류 수정 170 우녕자 2015.01.20 3.6k
16 업데이트 할일 기록 14 우녕자 2014.12.22 2.0k
15 웹서버 설정 최적화 11 우녕자 2014.12.22 2.5k
14 사이트 속도가 느린 원인을 조사중입니다. 16 우녕자 2014.12.18 2.1k
13 D2NT 37차,38차에서 트로이가 발견되었습니다. 58 우녕자 2014.12.15 4.6k
12 데이터베이스 업데이트 - mariadb-10.0.15-winx64 2 우녕자 2014.12.12 2.0k
11 반복적으로 다운로드할 시 포인트가 부족할 수 있습니다. 325 우녕자 2014.12.12 42.7k
10 다운로드시 게시글이나 댓글쓰기가 요구됩니다. 51 우녕자 2014.12.07 2.3k
9 업데이트 오류 수정 11 우녕자 2014.12.04 2.0k
8 회원가입 오류 수정 34 우녕자 2014.11.25 2.3k
7 래더검색 복구 7 우녕자 2014.10.16 2.7k
6 보안 업데이트 5 우녕자 2014.10.15 2.7k
5 개발 로그 5 우녕자 2014.10.02 2.7k
4 회원가입 안내 14 우녕자 2014.09.22 3.3k
3 인기할인 - 아마존/바바리안 아이템 추가. 4 우녕자 2014.06.11 3.4k
2 Today's Specials 추가 예정 2 우녕자 2014.05.13 3.1k
1 검색 데이터를 날렸습니다. 1 우녕자 2014.05.12 3.4k