Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 단일 테이블에서 여러 SELECT 쿼리를 IN() 연산자로 최적화하는 방법

단일 테이블에서 여러 개의 SELECT 쿼리를 반복해서 실행하면 데이터베이스에 불필요한 부담을 주고 성능 저하로 이어질 수 있습니다. 이럴 때 IN() 연산자를 사용하면 쿼리를 한 번만 실행하면서 여러 값을 동시에 조회할 수 있어 성능을 크게 향상시킬 수 있습니다.

예제 테이블 생성하기

먼저 실습용 데모 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
   Id int,
   Name varchar(100),
   Age int
);
Query OK, 0 rows affected (0.77 sec)

데이터 삽입하기

INSERT 명령을 사용해 테이블에 샘플 레코드를 추가합니다.

mysql> insert into DemoTable values(1,'Chris',23);
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable values(2,'David',21);
Query OK, 1 row affected (0.56 sec)
mysql> insert into DemoTable values(3,'Mike',24);
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable values(4,'Robert',22);
Query OK, 1 row affected (0.12 sec)

저장된 데이터 확인하기

SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable ;

위 쿼리는 다음과 같은 결과를 출력합니다.

+------+--------+------+
| Id   | Name   | Age  |
+------+--------+------+
|    1 | Chris  |   23 |
|    2 | David  |   21 |
|    3 | Mike   |   24 |
|    4 | Robert |   22 |
+------+--------+------+
4 rows in set (0.00 sec)

IN()을 활용한 최적화된 쿼리 작성하기

다음은 IN() 연산자를 사용해 단일 테이블에서 여러 SELECT를 하나의 쿼리로 통합한 예시입니다. 나이가 21, 22, 23인 사용자들의 이름을 한 번의 쿼리로 모두 조회할 수 있습니다.

mysql> select Name from DemoTable where Age in(21,22,23);

실행 결과는 다음과 같습니다.

+--------+
| Name   |
+--------+
| Chris  |
| David  |
| Robert |
+--------+
3 rows in set (0.00 sec)

이처럼 IN() 연산자를 활용하면 조건이 서로 다른 여러 SELECT 쿼리를 하나로 합쳐 실행할 수 있습니다. 그 결과 데이터베이스와의 통신 횟수가 줄어들고, 쿼리 파싱 및 실행 계획 수립 오버헤드도 감소하여 전체적인 처리 속도가 크게 향상됩니다.