728x90
반응형

CS/데이터베이스 3

Mysql 인덱스

인덱스란? 번역을하면 바로 색인이라는 단어로 번역된다. 색인은, 검색하면 책속의 낱말이나 어떤 챕터나 구절들을 빠르게 찾아볼 수 있게 쪽수 정보를 나타내주는 것을 뜻한다. 이 개념을 DB에 적용시킨 것이다. 인덱스는 어떻게 구성하는가? 인덱스는 CREATE INDEX 키워드로 구성이 가능하다. Team 이라는 테이블이 이렇게 있다. id(primary key) name member_id grade 1 홍길동 1 1 2 가나다 2 2 3 고길동 3 3 4 나길동 4 4 이름만으로 인덱스를 구성하고 싶다면 아래와 같이 수행해주면 된다. CREATE INDEX 테이블(칼럼); CREATE INDEX team_index team(name); 이렇게 해주게 되면 name의 오름차순 순서로 정렬되게 된다. 왜 정렬..

쿼리 개선 2

쿼리 속도 개선 1.6초 -> 0.4초 메타테이블과의 조인을 해서 정보를 얻어오는 과정 서로 논리적인 데이터베이스는 다른데 mysql에서 뷰 테이블을 사용하고 있음 그런데 유저 개개인의 데이터에서 매칭시키는 메타테이블의 idx 칼럼이 인덱스가 정해져있지 않았다. 그래서 유저 개개인의 데이터를 전부 조회해서 매칭되는 데이터를 추리고 있었다. 개선안 100개 이상의 row를 탐색하던 것이 25개만 탐색하는것으로 바뀐 실행이 나오게 된다. 그러면서 Extra가 제외되고 참조 정보가 인덱스로 가게 된다. 지금은 100개인 데이터였지만, 만약에 조회할 데이터가 10만 건, 100만 건 이렇게 늘어날 수록 시간은 증가했을 것이다. 진행중인 mysql 독서 스터디가 이런 생각을 하는데 도움을 많이 줬다.

쿼리 작성 및 최적화

Real Mysql real mysql 책을 읽으면서 스터디 한 내용을 정리하고자 한다. 일단 11.1 부터 11.3까지의 내용만을 정리했다. 내가 사용하는 애플리케이션에서 특정 데이터를 테이터베이스에 저장하거나 조회를 할 때 SQL이라는 문장을 사용해야 한다. 데이터베이스의 테이블이나 구조를 변경할때는 DDL(데이터 정의 언어) 테이블의 데이터를 조작을 위한 언어는 DML(데이터 조작 언어) 이다. SQL작성 규칙은 mysql의 서버 시스템 정책에 따라 바뀔 수 있다. 이 정책은 데이터베이스에 어떤 테이블의 데이터들이 들어가지 않았을 때 설정하는 것이 중요하다. 영문 대소문자 구분 Mysql에서는 설치된 운영체제에 따라서 대소문자를 구분하는데, DB의 테이블이 디스크의 디렉토리나 파일로 매핑이 되기 때..

728x90
반응형