'SQL 첫걸음' 공부 -Day 10

윤현묵·2021년 12월 22일
0

MySQL

목록 보기
11/12
post-thumbnail

[학습 DAY - 10]

28강 인덱스 구조

  • 인덱스
    -. 테이블에 붙여진 색인으로, 검색속도의 향상을 위해 사용
    -. 테이블에 인덱스가 지정되어 있으면 효율적으로 검색 가능, WHERE로 조건이 지정된 SELECT 명령의 처리속도 향상

  • 검색에 사용하는 알고리즘
    -. 풀 테이블 스캔 : 인덱스가 지정되지 않은 테이블을 검색할 때 사용, 테이블에 저장된 모든 값을 처음부터 차례로 조사해나가는 검색 방법
    -. 이진 탐색: 집합을 반으로 나누어 조사하는 검색방법으로, 차례로 나열된 집합에 대해 유효한 검색 방법. 데이터를 찾을 때, 집합의 중간부터 탐색하여 반씩 쪼개며 검색하고 대량의 데이터를 검색할 때 훨씬 빠르다
    -. 이진 트리: 고속으로 검색할 수 있는 탐색 방법이지만 데이터가 미리 정렬되어 있어야 함. 일반적으로는 테이블에 인덱스를 작성하면 테이블 데이터와 별개로 인덱스용 데이터가 저장장치에 만들어짐, 이때 이진 트리라는 데이터 구조로 작성됨. 탐색은 이진 탐색과 비슷한 방법으로 루트 노드부터 탐색을 시작하여 원하는 수치와 비교하며 가지를 따라 이동하며 탐색

  • 유일성
    -. 이진 트리에는 중복하는 값을 등록할 수 없다

29강 인덱스 작성과 삭제

  • 인덱스 작성
    -. CREATE INDEX 명령을 사용하여 인덱스 작성
    -. MySQL에서 인덱스는 테이블 내의 객체가 되므로 테이블 내에 이름이 중복되지 않도록 지정
    -. 해당 인덱스가 어느 테이블의 어느 열에 관한 것인지 지정할 필요가 있음 (복수로도 가능)
    -. 인덱스를 작성해두면 검색이 빨라짐, 작성한 인덱스의 열을 WHERE 구로 조건을 지정하여 SELECT 명령으로 검색하면 처리속도 향상

    • sample62 테이블의 no 열에 isample65라는 인덱스를 지정
      CREATE INDEX isample65 ON sample62(no);
  • 인덱스 삭제
    -. DROP INDEX 명령을 사용하여 인덱스 삭제
    -. 다른 객체와 동일하게 인덱스 이름만 지정(테이블 내 객체로서 작성하는 경우 테이블 이름도 지정)
    -. DROP INDEX 인덱스명(ON 테이블명)

    • 인덱스 삭제
      DROP INDEX isample65 ON sample62;
  • EXPLAIN
    -. 실제로 인덱스를 사용하여 검색하는 지 확인가능
    -. EXPLAIN SQL 명령어 실제 SQL 명령은 실행되지 않고 어떤 상태로 실행되는지 설명

    • EXPLAIN SELECT*FROM sample62 WHERE a='a';
profile
진정성 있는 개발자를 꿈꾼다

0개의 댓글