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 29721 게시물 읽기
No. 29721
Like 검색시 like %A% 와 like %a% 차이?
작성자
홍길동
작성일
2010-07-07 16:34
조회수
7,440

안녕하세요. 고수님들.

테이블 설계을 하는데. 다중선택 하는 필드가 있고 나중에 검색을 해야 해서

명칭 : A, B, C, D

테이블 입력시 "A|", "A|B|", "C|D", "A|D" 이런식으로 입력 되고

검색시 "A" 가 들어간 검색을 할려 합니다.

이럴경우 입력값 이 "A" 와 "a" 로 하는 경우 속도 차이가 나는지?

다중선택시 더 좋은 테이블 설계법이 있는지

고수님들의 조언 부탁 드립니다.

이 글에 대한 댓글이 총 1건 있습니다.

1. 대소문자 구별에 대해

컬럼을 binary로 하지 않으신다면, 대소문자 구별은 collation에 의해 결정됩니다.

Case-insensitive한 collation은 _ci가 붙습니다. (예:utf8_general_ci)

 

 

2. LIKE

만약 A|B, A|D와 같이 항상 A가 먼저 나온다면 LIKE검색시 %를 앞에 주실 필요는 없을 것 같습니다.

LIKE 'A%'가 LIKE '%A%'보다 월등히 빠른 결과를 보여줍니다.

 

 

3. 정규화

값이 굉장히 많고, 앞으로도 추가될 여지가 있다면, 개인적으로는 정규화를 할 것 같습니다.

 

예를 들어, 게시물에 대해 태그를 단다고 할 때,

비정규화 : 해당 게시물이 보관되는 테이블에 tag컬럼을 추가하고 tag1,tag2,tag3로 입력

정규화 : tag 테이블(tag_T), 게시물 테이블(board_T), 관계 테이블(board_tag_T)로 분리하여 board의 UID와 tag의 UID의 관계를 보관.

 

박현우(lqez)님이 2010-07-08 13:38에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29724Like 구문 질문
홍길동
2010-07-10
6749
29723(초보) mysql 쿼리문 질문 드립니다.
권오민
2010-07-08
6763
29722connection 유지 방법 문의 [1]
박세정
2010-07-08
7049
29721Like 검색시 like %A% 와 like %a% 차이? [1]
홍길동
2010-07-07
7440
29720선입선출에 대한것입니다.
눈물꼬마
2010-07-05
6688
29718php 에서 ip주소로 접속하게 하면 오류발생..
이기석
2010-07-05
7216
29717mysql bin로그 삭제 [1]
김하림
2010-07-05
7059
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다