본문 바로가기
서버인프라/데이터베이스

Index는 얼마나 Query성능을 향상 시킬까???

by techwold ted 2022. 11. 25.

단순하게 쿼리 성능테스트를 해보기로 했다 Index설정 할 때와 하지 않고 할때.

우리가 db를 설계할때 왜 많은 고민을 하며 해야 하는지를 알 수 있을 것이다.

해당 조건은 아래와 같다.

조건 쿼리는 아래와 같이 할 예정이다.

primary key로 seq가 되어 있기에 속도로 보면 바로바로 튀어 나온다. 하지만 index 걸려있지 않는 mb_id를 where절에 넣는다면 얘기가 달라질 것이다. 

MariaDB [ted]> select * from member_table where seq=2341;

 

그럼 이제 mb_id로 쿼리를 해보겠다.

MariaDB [ted]> select * from member_table where mb_id="ted2341";

그럼 이제 mb_id index를 설정하고 다시 한번 쿼리를 실행해 보겠다.

MariaDB [ted]> create index mb_id on member_table(mb_id);
Stage: 2 of 2 'Enabling keys'      0% of stage done
Query OK, 9999998 rows affected (55.429 sec)
Records: 9999998  Duplicates: 0  Warnings: 0
MariaDB [ted]> show index from member_table;
+--------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| Table        | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Ignored |
+--------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| member_table |          0 | PRIMARY  |            1 | seq         | A         |     9999998 |     NULL | NULL   |      | BTREE      |         |               | NO      |
| member_table |          1 | mb_id    |            1 | mb_id       | A         |     9999998 |     NULL | NULL   | YES  | BTREE      |         |               | NO      |
+--------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
2 rows in set (0.001 sec)

member_table의 mb_id컬럼에 대해 index가 생성 되었습니다.

위에서 실행했던 쿼리에 대해 속도가 얼마나 빨라졌을지 확인해 보겠습니다. 다들 어떻게 생각하시나요

별로 많은 데이터가 아님에도 불구하고 아래와 같은 결과가 나왔습니다.

우리가 왜 DB사용에 신중을 기해야 하며 많은 시간을 할애 해야 하는지를 알 수 있을 거라 생각 합니다.

MariaDB [ted]> select * from member_table where mb_id="ted2341";
+------+---------+-------+---------+---------+
| seq  | mb_id   | mb_pw | address | mb_tell |
+------+---------+-------+---------+---------+
| 2341 | ted2341 | 1234  | LEE     | sjglka  |
+------+---------+-------+---------+---------+
1 row in set (0.001 sec)

다들 많은 도움이 되셨기를 바랍니다.

댓글