Background Image

FORUM

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

안녕하세요~

 

MySQL에서 큐브리드 포팅하면서 궁금즘이 생겨서 질문드립니다.

 

SELECT 시, 필드 값의 대/소문자 구분 없이 검색하는 방법으로 아래와 같은 쿼리가 적당할까요?

 

예시 테이블 생성 및 샘플 데이터)

 

CREATE TABLE "entries"(
"uid" integer AUTO_INCREMENT,
"entry" VARCHAR(255) NOT NULL,
"meaning" VARCHAR(255) NOT NULL,
PRIMARY KEY("uid")
);
 

INSERT INTO "entries" ("entry", "meaning") values ('japan', '옻칠');

INSERT INTO "entries" ("entry", "meaning") values ('Japan', '일본');

 

질의1)

select * from "entries" where "entry" = 'japan';

 

/*

질의1의 결과) 아래 1건만 검색 됨

 japan, 옻칠

*/

 

질의2) 대소문자 관계 없이 검색하기 위해 사용해 본 쿼리

select * from "entries" where lcase("entry") = lcase('japan');

 

 

질의2와 같이 필드 값과 입력 값을 모두 소문자로 맞춰 검색하면 2개의 japan 레코드가 나옵니다만...

 

이것이 성능상으로 문제가 있지 않을까 싶어서, 문의드립니다.

 

성능 저하가 우려가 있다면, 혹시 다른 방법이 있을까요?

 

  • ?
    남재우 2011.04.02 04:05

    안녕하세요.

    현재 CUBRID는 대소문자를 구분하고 있으므로 일반적인 방법으로는 어렵습니다.

    말씀하신 방법으로 가능하나, 문제는 lcase(entry) 와 같이 필드에 함수를 사용시 인덱스사용이 되지 않아 성능이 떨어질 가능성이 높아진다는 것이 문제입니다.

    아마도 아시겠지만 할 수 있는 방법은 2가지가 있습니다.

    1. 입력시 강제 소문자로 변환하여 소문자로 저장시킵니다. 그런후 비교시 where entry = lcase(비교값) 형태로 할 수 있습니다. 단점은 결과가 소문자로 나온다는 것입니다.

    2. 필드를 하나 추가합니다. entry 에는 원래값을 넣고 entry_lcase 에는 소문자로 값을 입력합니다. 그런후 비교는 where entry_lcase = lcase(비교값) 의 형태로 질의하고 select 절에서는 entry 값을 봅니다. 단점은 필드가 하나 늘어남에 따라 응용에서 질의 사용에 신경써야 하고 역시 데이터량의 증가로 이어질 수 있습니다.

    현재로써는 이정도 방법이 좋을 것 같습니다.

  • ?
    차오이 2011.04.02 04:46

    일단.. 검색용 필드를 따로 추가해 활용하는 것이 좋겠네요.. 힌트 감사합니다 ^^


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4441
3706 UTF-8 한글이 깨집니다. 5 코난7 2011.04.30 16473
3705 큐브리드 쿼리 처리 속도에 대한.. 8 스마트 2011.01.10 16426
3704 Clob Insert 시 Java heap space 에러 문의드립니다. 2 김상윤 2013.05.10 16401
3703 페도라 10에서 큐브리드 rpm 설치시 오류 1 스나이퍼 2009.03.26 16391
» SELECT 시, 필드 값의 대소문자 구분 없이 조건 검색 가능할까요? 2 차오이 2011.04.02 16380
3701 저장 프로시저 작성법 1 webdoors 2010.03.14 16379
3700 java PreparedStatement 변수 바인딩 시 에러 1 빛돌 2012.08.04 16350
3699 Java VM is not running....문제입니다 1 수수 2011.04.29 16348
3698 OLEDB insert관련 질문입니다. 1 garfield39 2009.02.05 16334
3697 jsp 연결~~ 1 하이에나 2009.11.10 16333
3696 이클립스 DBViewer에서 1분정도 지나면 컨넥션이 끊어집니다. 2 천타에 허리한번 펴자 ㅡㅡ; 2009.06.04 16332
3695 mysql에서 limit와 같은 기능이 있나요? 1 홍서기 2009.03.14 16332
3694 double 표시형식 문의 2 지렸당께 2011.12.18 16275
3693 [문의]임베디드 SQL 개발시 참고해야 할 기술문서가 어디있는지요? 1 victory 2009.01.22 16269
3692 cubrid broker fail문제 1 왠키 2016.12.13 16262
3691 Cannot communicate with the broker 오류 2 미스터투 2013.04.16 16251
3690 Cubrid iBatis Cursor 예제좀 부탁드립니다. 1 깨달음 2012.03.21 16250
3689 오라클에서 큐브리드 데이터 이관 1 으라챠챠 2016.12.07 16239
3688 cubridmigration toolkit 이용시 2 쩡저리 2013.11.07 16235
3687 mysql 데이트 컬럼 자르기 문의 2 초보 2010.03.31 16213
Board Pagination Prev 1 ... 10 11 12 13 14 15 16 17 18 19 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales