[SQL] select 조회 속도 비교

justice·2025년 1월 12일

SQL

목록 보기
3/3
post-thumbnail

약 500만건의 더미 데이터를 만들었다.

여러가지 SQL문으로 조회 속도를 확인해보고자 한다.
주제: 특정 문자가 있는 데이터 조회

1. LIKE - 인덱스 없는 경우

LIKE '%A%' - 테이블 풀 스캔


LIKE 'A%' - 테이블 풀스캔


2. 인덱스

2-1. name에 인덱스 생성

CREATE INDEX name_index ON dummy_data(name);
오류 - 인덱스 설정 시 text 타입일 경우

인덱스를 거는 Column의 타입이 text면 오류가 난다.

0 15 17:19:52 create index name_index on dummy_data(name) error code: 1170. blob/text column 'name' used in key specification without a key length 0.032 sec

해결

VARCHAR() 타입으로 변경한다.

2-2. 인덱스 삭제

DROP INDEX name_index ON dummy_data;

2-3. 인덱스 확인

SHOW INDEX FROM dummy_data;

인덱스 안타는 경우 (%A%,%A) - 풀 테이블 스캔


인덱스 타는 경우 (A%) - 인덱스 레인지 스캔


[참고] 스캔 종류

3. 풀 텍스트 인덱스

3-1. 풀 텍스트 인덱스 생성

-- Built-in parser
CREATE FULLTEXT INDEX 인덱스이름 ON 테이블이름 (열이름);
-- n-gram parser
CREATE FULLTEXT INDEX ft_index ON articles (title,body) WITH PARSER ngram;

3-2. 풀 텍스트 인덱스 삭제

ALTER TABLE 테이블이름 DROP INDEX FULLTEXT (열이름);

stopword

n-gram

0개의 댓글