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 로 가시는걸 추천드리구요.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
SELECT * FROM 테이블 WHERE match(memo) against('바보멍청이');//결과값 없음
memo 필드에 값은 "바보멍청이 abcd 하하" 이렇게 저장되어 있고 fulltext 걸었는데...
왜 결과값이 없다고 나올까요??
테이블이랑 필드 utf8 이고요..ㅜㅜ
아니면 like %abcd% 검색처럼 구현 가능한 방법이 또 있을까요??