본문 바로가기
728x90
반응형
SMALL

IT/DBMS 공통28

MySQL 속도 개선 TIP 1. WHERE 절에서 사용하는 컬럼은 index 를 주자. - 모두 index를 줄 수는 없으나 모든 쿼리에서 동일하게 사용하는 조건이 있다면 - 또는 자주 사용하는 where 조건이 있다면 해당 컬럼은 index를 줘도 좋을지 고민해 보자. ​ 2. 인덱스 추가한 date 컬럼 사용 시 주의점 - where 조건문의 왼쪽은 인덱스 대상이 아니기 때문에 where date_format(date) between ? and ? 하면 - 왼쪽의 date_format(date) 부분이 비효율적으로 동작한다. (인덱싱 되지 않는다.) - 유사건으로 사내 제품에서 trim(date_column)으로 하고 있는 경우가 발견되어 조치 했다. ​ 3. between 보다는 >= = and = 조건으로 사용하는 경우가 .. 2020. 9. 24.
MySQL 인덱스 설정 기준 인덱스 설정 기준 카디널리티가 높을수록 좋다. - index 후보군 컬럼 A, B, C 가 있다고 가정하고 아래와 같이 쿼리해서 커디널리티가 높은 컬럼 확인 SELECT COUNT(DISTINCT(A)) A_cad, COUNT(DISTINCT(B)) B_cad, COUNT(DISTINCT(C)) C_cad FROM tbl; - A, B, C 세개를 복합인덱스로 설정할 경우 카디널리티가 높은 순서대로 지정하는 것이 좋다. 선택도가 낮을 수록 좋다. (5~10%) - 선택도란 필드의 값들이 어떻게 다른지를 설명하는 것이다. - 선택도 계산은 COUNT(DISTINCT) 한 숫자를 전체 레코드의 숫자로 나눈다. - user_id 가 unique 할 경우 전체 row 수와 user_id count 가 같을 것이.. 2020. 8. 7.
[MySQL] 실행계획 옵티마이저 쿼리를 최적으로 실행하기 위해 테이블의 데이터가 어떤 형태로 분포되어 저장되어 있는지 통계 정보를 참조하고 실행계획을 만들어 낸다. 대부분의 DBMS는 비용기반 최적화(Coast-based optimizer, CBO)방법을 이용한다. 아주 오래전 예전 오라클에서는 규칙기반 최적화(Rule-based optimizer, RBO)을 이용하기도 했다. (현재는 거의 사용하지 않는 방법) ​ 통계정보 CBO에서 가장 중요한 것은 통계정보다. 오라클의 경우 통계정보가 상당히 정적이고 수집에 많은 시간이 소요되기 때문에 통계 정보만 따로 백업하기도 한다. MySQL에서 관리되는 통계정보는 대략의 레코드 건수와 인덱스의 유니크한 값의 개수 정도이다. Memory 테이블은 별도 통계 정보가 없으며, MyIS.. 2020. 1. 31.
database convert latin1 to utf-8 latin1 database converting to utf-8 1. backup mysqldump -u{username} -p{password} {dbname} --default-character-set latin1 > {dump_file_name}.sql --default-character-set latin1 이 없으면 온전하게 백업이 되지 않을 수 있다. 2. change character set iconv -c -f cp949 -t utf-8 {dump_file_name}.sql > {utf8_dump_file_name}.sql 3. change table architecture (use edit plus) ctrl + r 로 text 찾기(바꾸기) latin1 => utf8 4. drop dat.. 2014. 9. 15.
728x90
반응형
LIST