database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 29552 게시물 읽기
No. 29552
mysql 검색
작성자
이하사(qpznm)
작성일
2010-02-18 14:10
조회수
6,847

사과 , 딸기 , 배 , 바나나 , 오렌지

라는 데이터가 있습니다. 저 데이터를 어떻게 입력을 해야 검색을 최적화 할수 있을까요?

예1)
A => 사과|딸기|배|바나나
B => 딸기|사과|바나나
C => 배|오렌지

| 구분자를 사용하여 입력했을 경우  "배" 를 좋아 하는 사람은 누구인가 라는 쿼리를 작성

할 경우 LIKE '%배%' 를 해야 A , C 라는 결과값이 나오게 됩니다.

LIKE '배%' 를 하게 되면 C 만 나오게 되고 '%배' 의 경우는 아무것도 안나옵니다.

LIKE '%배%' 를 사용할경우 인덱스의 영향을 받지 않아 검색 속도가 오래 걸리게 됩니다.

예2)
A => 사과
A => 딸기
A => 배
A => 바나나

B => 딸기
B => 사과
B => 바나나

C => 배
C => 오렌지

이렇게 다중 row 로 입력을 할 경우 "배" 를 좋아하는 사람은 누구인가 라는 쿼리를 작성

할 경우  = '배'를 사용하여 검색속도는 빠르지만 , "배"또는"사과"를 좋아 하는 사람은 누

구인가 라는 쿼리일 경우 = '배' OR ='사과' 가 됩니다.

제가 묻고자 하는 요점은 평균 테이블 데이터가 1억개 정도 입니다. 1억개가 넘는 테이블

을 상대로 LIKE '%%' 검색과 OR = '' 검색은 속도에 엄청난 영향을 미치게 됩니다.

이 문제점을 해결할수 있는 방법이 없는지가 궁금합니다.

1 , 2 , 4 , 8 의 비트연산으로 할경우 쉽습니다.

사과 = 1 , 딸기 = 2 , 배 = 4 , 바나나 = 8 , 오렌지 = 16

으로 해 사과와 배를 좋아 하면 1+4 = 5 를 입력하여 ' 해당필드 & 5 ' 를 하게 되면 되지

만 아까도 말씀 드렸듯이 데이터가 1억개가 넘어 갑니다. 비트연산의 한계를 넘어 섭니다.

다른 좋으신 의견 있으신분은 말씀좀 해주세요

[Top]
No.
제목
작성자
작성일
조회
29555SELECT 구문으로 선택된 결과를 바로 INSERT할 때 auto_increment 값의 이상 증가에 대한 질문입니다 [1]
김승동
2010-02-19
6899
29554mysql에서 쿼리로 max_connection 수 조절하는 방법 문의 [1]
이은규
2010-02-19
7268
29553데이터 입력을 잘못하여 못 빠지는 경우 [2]
유기양
2010-02-19
6387
29552mysql 검색
이하사
2010-02-18
6847
29551이런 경우 데이터 파일 증가가 어떤 식으로 되는 건지 아시는 분 계시면 답변 부탁드립니다 [3]
김승동
2010-02-17
6207
29550MySQL 서버의 메모리는 얼마나 설치해야 적당할까요? [1]
김주홍
2010-02-16
6835
29549cpu wait 점유율 99.99% 미치겠습니다. [1]
치윤
2010-02-16
7168
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다