db설계 랑 쿼리문 질문..!!

db설계 랑 쿼리문 질문..!!

QA

db설계 랑 쿼리문 질문..!!

본문

십만이상 고객이 있고 고객별로 100개 이상 결제 건이 등록이 되어야 합니다.

고객 x 결제건 = 천만

이렇게 될텐데 mysql myisam 으로 문제가 없나요?

현재 십만개를 등록하니 벌써 30메가나 됩니다.

 

그리고 아래와 같이 테이블이 만들어져 있을 때 통합검색이 되어야 하는데 셀렉팅을 어떻게 해야할 지 모르겠습니다.

create table 테이블 (

 no int(11) not null auto_increment,

 date date not null,

 hp varchar(13) not null,

 memo varchar(255) not null,

 primary key(no)

);

 

select * from 테이블 where replace(hp,'-','') like '%7142%' or memo like '%7142%' order by date desc;

 

이렇게 검색하니 0.5초나 나오는데... 겨우 십만개인데 이정도면 천만이면 50초 걸리는건가요?ㅜㅜㅜㅜ

인덱스를 이래저래 걸어봐도 마찬가지인 건 인덱스가 안걸린다는 건데...

어떻게 해야할 까요??ㅜㅜ 

이 질문에 댓글 쓰기 :

답변 2

like '%7142%' 이 조건은 인덱스를 탈 수 없는 구조 입니다. 

해당 테이블 해당 필드에 fulltext 를 거세요

그리고 가급적이면 중복된 입력을 막기 위해 innoDB 로 가시는걸 추천드리구요.

SELECT * FROM 테이블 WHERE match(memo) against('abcd');//결과값 없음
SELECT * FROM 테이블 WHERE match(memo) against('바보멍청이');//결과값 없음

memo 필드에 값은 "바보멍청이 abcd 하하" 이렇게 저장되어 있고 fulltext 걸었는데...
왜 결과값이 없다고 나올까요??
테이블이랑 필드 utf8 이고요..ㅜㅜ

아니면 like %abcd% 검색처럼 구현 가능한 방법이 또 있을까요??

답변을 작성하시기 전에 로그인 해주세요.
전체 62
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT