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 4443
3987 cubrid count 속 2 kanin 2024.04.19 10
3986 cubrid 10.1 데이터 덮어쓰기 질문입니다. 1 ysk96 2024.04.18 17
3985 ACTION 명령어? 예약어? 1 투투투투기기 2024.04.17 16
3984 sql 구문 사용시 데이터 타입 decimal일 경우 1 투투투투기기 2024.04.11 26
3983 Regexp_count 4 SEO 2024.04.09 56
3982 큐브리드 메모리 오류 관련 질문 2 file 뚜벅뚜벅 2024.04.09 57
3981 큐브리드 실행이 안되는 이슈 1 file 최현욱 2024.04.09 36
3980 unloaddb & loaddb 관련 질문이 있습니다. 1 543534512 2024.04.06 43
3979 mac m1 다운로드 오류 1 file 혜주냉면 2024.04.05 40
3978 list 함수로 만든 sequence type을 varchar로 변환 문의 1 플레이어블 2024.04.04 35
3977 DECODE, CASE WHEN 사용법 문의 2 핑크팬더 2024.04.03 53
3976 schema 파일 loaddb - 스키마 정보 중복오류 문의 4 daay 2024.03.21 88
3975 object to string 4 네오랜덤 2024.03.20 67
3974 mysql로 DB연동 문의 2 연동테스트용 2024.03.20 68
3973 특정DB만 접근 시간이 현저하게 오래 걸리는 문제 1 file 그로구 2024.03.20 58
3972 jdbc 연동시의 charset 강제 변경 방법 1 file gwak 2024.03.14 56
3971 도커로 HA환경 구성 테스트중 hb start.. 1 wodud0170 2024.03.12 62
3970 이중화 관련 문의드립니다. 1 adqwdqwd123412 2024.03.12 66
3969 큐브리드 마스터 복제 관련 문의 드립니다. 2 이지혜 2024.03.11 60
3968 큐브리드 다운로드 에러 1 file 나래아빠 2024.03.08 84
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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