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
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 21 admin 2024.04.23 143856
1028 cci_connect 의 에러코드에 관하여 질문드립니다 7 엥꼬 2011.06.29 12716
1027 csql 로 demodb 접속 시 오류 입니다~! 1 하하보이 2011.06.29 15280
1026 R3.1 64비트 서브쿼리 관련 문의 드립니다 2 hj 2011.06.28 10896
1025 php 모듈 로드 문제 입니다. 2 하하보이 2011.06.28 11807
1024 Table primary key잡는 중 중단 시키고, 서버 재시작하니 에러나고 시작이 안되네요. 1 미스터투 2011.06.28 10390
1023 4.0 정식판은 언제쯤 나올까요? 2 유니콘 2011.06.28 10879
1022 Connect Error 1 제이씨씨 2011.06.24 19012
1021 ERROR(196623) 무슨에러인가요? 1 닉넴 2011.06.24 12036
1020 IIS 7.5 x64 / PHP 5.3 x64 / Cubrid R4.0 x64... 1 platanus 2011.06.23 14715
1019 큐브리드매니저에서 dba암호를 걸어버리면 연결할수 없다.브로커와 구동상태를 점검하라. 이렇게 오류가 나오네요 2 블루토토 2011.06.23 12916
1018 연결(Connection)을 얻을 수 없습니다. 브로커와 서버의 구동 상태를 점검하십시오. 이 에러가 납니다 3 블루토토 2011.06.22 16889
1017 PHP에서 CUBRID 4.0 모듈이 로드 되지 않습니다. 1 file 유리심장 2011.06.22 13983
1016 DB MS949를 UTF로 변환 하는 방법이 궁굼합니다. 1 dktk 2011.06.21 16571
1015 큐브리드매니저에서 질의결과가 나타나지 않습니다. 3 file 미스터투 2011.06.19 12306
1014 Code::Blocks - CCI 개발 환경 문의 3 reerror 2011.06.17 16083
1013 리눅스 민트(우분투)에서 cci 개발 환경 구축 방법 5 reerror 2011.06.16 18341
1012 외부에서 메니져 접속이 안됩니다. 3 platanus 2011.06.14 15505
1011 백업시 lgar 파일이 지워지지 않는 문제 6 동현 2011.06.11 23528
1010 ResulstSet이 닫혔는데... 닫히는 이유가 먼가요? 3 안지민 2011.06.10 18479
1009 ODBC, OLEDB 접속후, ADO 프로그래밍을 했을 때.. 1 lkim 2011.06.09 16537
Board Pagination Prev 1 ... 157 158 159 160 161 162 163 164 165 166 ... 213 Next
/ 213

Contact Cubrid

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