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 도구 출시 안내 admin 2024.04.23 136
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4477
985 SELECT FETCH 문제 3 초보123 2018.03.07 552
984 SAP Connection 관련 질문입니다. 1 chuci 2019.01.09 196
983 Rocky Linux 9에 큐브리드 9.3버전 설치 3 범이 2023.12.19 100
982 ResulstSet이 닫혔는데... 닫히는 이유가 먼가요? 3 안지민 2011.06.10 15607
981 Replication, 서버 이중화, HA 2 승준77 2012.01.26 23263
980 Release upgrade 문의 1 yscoma 2017.02.13 9138
979 Regexp_count 4 SEO 2024.04.09 71
978 Redmine 의 데이터베이스로 큐브리드를 사용하는 것이 가능할까요? 3 밝은마음 2018.04.17 260
977 Redhat 8버전 tls 1.0 에러 9 11시38분 2024.01.30 120
976 ROW_NUMBER() OVER(PARTITION BY 어떻게..해야 할까요??? 5 초식곰 2011.09.09 26465
975 REUSE_OID 적용 시 이해가 잘안되는 부분이 있어 질문드립니다. 1 덴드로비움 2017.08.23 1081
974 REST api 지원 여부 1 몰라알수가없어 2019.08.29 700
973 REPLACE 함수 문의 1 아범 2019.03.22 1786
972 RDB와 ORDB 벤치마크 3 rahmat 2009.04.09 19390
971 RANK 함수 관련 질문드립니다. 2 이종진 2013.06.11 10487
970 R3.1 64비트 서브쿼리 관련 문의 드립니다 2 hj 2011.06.28 7938
969 R3.0 버전 문의 3 겜기능되거든 2010.10.07 8070
968 R2.2 에서 트랜잭션과 inser_id() 1 파스크란 2014.03.03 6156
967 R2.2 에서 엑셀로 보내기가 않되는 것 같습니다. 1 배워볼까 2010.06.05 9805
966 R1.4->R2.0(64비트)베타 업그레이드 및 마이그레이션후 DB접속불가. 1 xclass 2009.12.21 11763
Board Pagination Prev 1 ... 147 148 149 150 151 152 153 154 155 156 ... 201 Next
/ 201

Contact Cubrid

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