와일드카드 %가 한 쪽만 있는 경우 (양방향이 아닌 경우)
- 문자열 끝에만 있는 경우 인덱스를 사용하여 검색을 최적화할 수 있다.
SELECT * FROM users WHERE name LIKE 'John%';
위의 쿼리에서는 'John'으로 시작하는 이름을 검색하고 있으며, 데이터베이스는 인덱스를 사용하여 일치하는 결과를 빠르게 찾을 수 있다.
와일드카드 %가 양방향으로 있는 경우
- 일반적으로 양방향 LIKE 연산자를 사용하면 데이터베이스의 인덱스를 사용할 수 없다.
예를 들어, 다음과 같은 쿼리에서 인덱스를 사용할 수 없다.
SELECT * FROM users WHERE name LIKE '%John%';
위의 경우, 와일드카드 '%'가 문자열의 양쪽에 있어서 데이터베이스는 인덱스를 사용하지 않고 전체 테이블 스캔을 수행해야 한다. 전체를 스캔해야 하기 때문에 테이블 크기가 크면 클수록 성능에 부정적인 영향을 미칠 수 있다.
FULLTEXT 인덱스 : MySQL(5.6버전 이상)이라면 방법은 있다.
- 양방향 LIKE 연산자를 사용해야 하는 경우에도 인덱스를 활용하는 방법이있다.
- MySQL 환경이라면, `FULLTEXT` 인덱스를 사용하여 자연어 검색을 최적화하는 방법이다.
- `FULLTEXT` 인덱스는 텍스트 데이터를 빠르게 검색할 수 있는 인덱스로, 전체 테이블 스캔을 피할 수 있다.
- FULLTEXT 인덱스는 특히 자연어 검색과 불완전한 문자열 검색에 적합하며, 일반적인 인덱스와 달리 양방향 와일드카드 검색에도 효과적이다.
- MySQL에서 MyISAM 및 InnoDB 스토리지 엔진에서 사용할 수 있다.
'개발기초' 카테고리의 다른 글
데이터베이스(Database) 정규화(Normalization)란? (0) | 2023.05.11 |
---|---|
FULLTEXT 인덱스 개요, 특징과 작동원리 (0) | 2023.05.10 |
데이터베이스에서 인덱스란? 왜 필요한가? (0) | 2023.05.10 |
정규 표현식에 대해서 (0) | 2023.04.25 |
클라우드 (Cloud) 컴퓨팅의 종류와 특징 (0) | 2023.04.24 |
댓글