ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [About _ MySQL _ INDEX]
    About_Datascience/SQL 2023. 2. 3. 10:46

    INDEX 는 검색 속도가(READ) 빨라지게 하기 위해 사용된다. 그러나 저장공간을 10% 정도 더 차지하고

      INSERT , DELETE , UPDATE 를 할 때 속도가 느려지기 때문에 필요한 상황에 맞게 사용하는 것이 중요할 것 같다.


    INDEX는 테이블의 컬럼 단위로 설정 가능하고 INDEX에는 두 가지 종류가 있다.


    첫 번째로 클러스터형 인덱스검색 속도에 큰 영향을 주지 않기 때문에 검색 속도에는 큰 의미가 없지만

    데이터 정렬해주는 기능을 갖고 있다. 
    두 번째로 보조 인덱스 (secondary) 가 있는데 보조 인덱스가 우리가 생각하는 검색 속도 향상에 영향을 주는 인덱스이다.


     

    <employees dataset>

    # index 출력
    SHOW INDEX FROM salaries;

     

    employees의 index 출력 결과

     

    INDEX의 주 기능인 검색 속도 향상을 확인해보기 위해 INDEX 없이 쿼리를 실행해 보고 ,

    INDEX 설정 후 쿼리를 실행해 본 후 속도를 비교해보도록 해보자 ! 

     

    1. INDEX 없이 쿼리 실행 

    # 인덱스 없이 쿼리 실행 (0.901sec)
    SELECT * FROM salaries WHERE to_date < '1986-01-01';

    MySQL 창 아래 Action Output 탭의 Duration / Fetch Time 을 보면 쿼리 없이 실행 했을 때 0.901 sec

    걸린 것을 확인할 수 있었다. 

     

    그렇다면 이제 인덱스를 설정해보고 다시 쿼리를 실행해보자. 

     

     

    <인덱스 설정>

    # 인덱스 설정 6339개 나옴 (280만개중에)
    CREATE INDEX tdate ON salaries (to_date);

    인덱스를 설정해면 총 데이터인 280만개 중, 6339 개가 나온다 . 

     

     

     

    2. INDEX 설정 후 쿼리 실행 

    # 인덱스 설정 후 속도 확인 (0.036sec) 2~30배 빨라짐.
    SELECT * FROM salaries WHERE to_date < '1986-01-01';

    0.036secINDEX 설정 전보다 2~30배가 빨라진 것을 확인할 수 있었다. 

    이는 나중에 데이터 개수가 기하급수적으로 많아지면 더 확연한 차이를 느낄 수 있을 것 같다. 

    'About_Datascience > SQL' 카테고리의 다른 글

    [About _ MySQL _ Sub Query]  (0) 2023.02.02
    [About _ MySQL _ join]  (0) 2023.02.01
    [About_MySQL _ group by 와 having]  (0) 2023.02.01
    [About_MySQL _ 함수 , 조건절]  (0) 2023.01.31
    [About_MySQL 기본문법(2)_DML의 CRUD]  (0) 2023.01.31
Designed by Tistory.