MySQL 작성 표 최적화 전략 소결

디 렉 터 리 1.문자 집합 선택 12.메 인 키 1 3.외 키 2 4.색인 2 4.1.아래 상황 은 색인 2 4.2 를 만 드 는 데 적합 합 니 다.아래 상황 에 서 는 색인 3 4.3 을 만 드 는 데 적합 하지 않 습 니 다.연합 색인 3 4.4.색인 길이 4 5.특수 필드 4 5.1.중복 필드 4 5.2.분할 필드 4 5.3.BLOB 와 CLOB 5 6.특별 차이 5 6.1.표 분할 5 6.2.비 사무 표 형식 5.1.문자 집합 을 사용 합 니 다.의 선택 이 모두 중국어 임 을 확인 하고 다 중 언어 및 중국어 로 표시 할 수 없 는 문 자 를 사용 하지 않 는 다 면 GBK 가 우선 순위 입 니 다.UTF-8 인 코딩 을 사용 하면 3 개의 바이트 가 차지 하 는데 GBK 는 2 개의 바이트 만 필요 하 다.2.메 인 키 는 가능 한 길이 가 짧 은 메 인 키 시스템 의 자체 증가 유형 AUTO 사용uid()와 같은 유형 을 사용 하 는 것 이 아니 라 INCREMEN 입 니 다.외부 키 를 메 인 키 로 사용 할 수 있다 면 더욱 좋다.예 를 들 어 1:1 의 관 계 는 메 인 시트 의 id 를 표 의 메 인 키 로 사용 합 니 다.홈 키 의 필드 길 이 는 필요 에 따라 지정 해 야 합 니 다.tinyint 는 2 의 7 차방-1:128 에서 127 smallint 까지 2 의 15 차방-1:32768 에서 32767 mediumint 는 2 의 23 차방-1:8388608 에서 8388607 int 는 2 의 31 차방-1 bigint 는 2 의 63 차방-1 을 메 인 키 에 단독 색인 을 만 들 필요 가 없다.시스템 내 부 는 메 인 키 로 클 러 스 터 색인 을 만 들 었 기 때문이다.다른 색인 에 홈 키 열 을 포함 할 수 있 도록 합 니 다.3.외부 키 의 외부 키 는 삽입 과 업데이트 성능 에 영향 을 줄 수 있 습 니 다.대량의 신뢰 할 수 있 는 데이터 의 삽입 에 대해 외부 키 검 사 를 차단 하 는 것 을 권장 합 니 다.데이터 양 이 많은 표 에 대해 서 는 외부 키 를 제거 하고 응용 프로그램 에서 데이터 완전 성 검 사 를 하 는 것 을 권장 합 니 다.가능 한 한 메 인 테이블 에 대응 하 는 메 인 키 를 외부 키 로 사용 하고 길이 가 큰 메 인 테이블 의 유일한 키 를 외부 키 로 선택 하지 않도록 합 니 다.외부 키 는 기본적으로 색인 을 추가 하 는 4.색인 으로 색인 을 만 듭 니 다.적당 한 표,적당 한 열 에 적당 한 수량의 색인 을 만 듭 니 다.검색 우선 과 업데이트 우선 사이 의 균형 을 잡다.4.1.아래 의 상황 은 색인 을 만 드 는 데 자주 검색 해 야 하 는 열 에 적합 합 니 다.검색 속 도 를 빠르게 할 수 있 습 니 다.메 인 키 로 하 는 열 에서 이 열의 유일 성과 조직 표 에서 데이터 의 배열 구 조 를 연결 하 는 열 에 자주 사용 하도록 강제 할 수 있 습 니 다.이 열 들 은 주로 외부 키 로 연결 속 도 를 가속 화하 여 범위 에 따라 검색 해 야 하 는 열 에 색인 을 만 들 수 있 습 니 다.색인 이 정렬 되 었 기 때문에 지정 한 범 위 는 항상 정렬 해 야 하 는 열 에 연속 적 으로 색인 을 만 드 는 것 입 니 다.색인 이 정렬 되 었 기 때문에 검색 은 색인 의 정렬 을 이용 하여 정렬 조회 시간 을 가속 화하 고 WHERE 자구 에 자주 사용 되 는 열 에 색인 을 만 들 며 조건 의 판단 속 도 를 가속 화 할 수 있 습 니 다.4.2.아래 의 경우 색인 을 만 드 는 데 적합 하지 않 습 니 다.검색 에서 거의 사용 되 지 않 거나 참고 하 는 열 에 색인 을 만 들 지 말 아야 합 니 다.이 열 들 이 거의 사용 되 지 않 기 때문에 색인 이 있 거나 색인 이 없 으 면 조회 속 도 를 높 일 수 없 기 때문이다.반면 색인 이 늘 어 나 오히려 시스템 유지 속 도 를 낮 추고 공간 수 요 를 늘 렸 다.데이터 값 이 적은 열 에 도 색인 을 추가 해 서 는 안 된다.이 는 이러한 열의 수치 가 매우 적 기 때문이다.예 를 들 어 인사 표 의 성별 열 은 조회 결과 에서 결과 집합 데이터 줄 이 표 에서 데이터 줄 의 큰 비례 를 차지 하기 때문이다.즉,표 에서 검색 해 야 할 데이터 줄 의 비례 가 매우 크기 때문이다.색인 을 늘 리 는 것 은 검색 속 도 를 뚜렷하게 가속 화 할 수 없다.text,image,bit 데이터 형식 으로 정 의 된 열 에 색인 을 추가 해 서 는 안 됩 니 다.이 열 들 의 데 이 터 량 이 상당히 많 거나 수치 가 적 기 때문이다.검색 성능 보다 성능 이 훨씬 클 때 색인 을 만들어 서 는 안 됩 니 다.성능 수정 과 검색 성능 이 서로 모순 되 기 때문이다.만약 에 표 데이터 가 매우 적다 면 예 를 들 어 각 성 이 시 에 따라 집계 하 는 표 는 보통 2000 보다 낮 고 데이터 양 은 대체적으로 변화 가 없다.이 때 색인 을 늘 리 는 것 은 검색 성능 에 도움 이 되 지 않 지만 업데이트 성능 에 큰 영향 을 줄 수 있 습 니 다.색인 을 추가 할 때 검색 성능 은 향상 되 지만 수정 성능 은 떨어진다.색인 을 줄 일 때 수정 성능 을 향상 시 켜 검색 성능 을 떨 어 뜨 린 다.따라서 검색 성능 보다 성능 수정 에 대한 요구 가 훨씬 클 때 색인 을 만들어 서 는 안 된다.4.3.연합 색인 은 특정 조회 에서 연합 색인 의 효과 가 여러 개의 단일 색인 보다 높 습 니 다.여러 개의 색인 이 사용 할 수 있 을 때 MySQL 은 그 중 하나 만 사용 할 수 있 기 때 문 입 니 다.검색 에 서 는 연합 색인 에 포 함 된 앞의 몇 개의 열 이름 을 사용 하여 연합 색인 에 사용 합 니 다.그렇지 않 으 면 부분 이나 사용 하지 않 습 니 다.예 를 들 어 우 리 는 firstname,lastname,age 열 에 있 는 여러 열 색인 이 있 는데 우 리 는 이 색인 을 fname 라 고 부른다.lname_age。검색 조건 이 아래 의 여러 열의 조합 일 때 MySQL 은 fname 을 사용 합 니 다.lname_age 색인:firstname,lastname,age firstname,lastname firstname 은 다른 한편 으로 이해 합 니 다.이것 은 우리 가(firstname,lastname,age),(firstname,lastname)이 열 조합 에 있 는 색인 을 만 든 것 과 같 습 니 다.4.4.색인 길 이 는 CHAR 또는 Varchar 의 열 에 대해 색인 은 데이터 의 분포 상황 에 따라 열의 일부분 으로 색인 을 만 드 는 데 참여 할 수 있다.create index idx_t_main on t_main(name(3)); 모든 최대 허용 길이 가 1000 바이트 가 아 닌 name 의 앞의 세 글자 가 색인 에 참여 하도록 지정 한 것 입 니 다.GBK 인 코딩 은 한자 500 개 입 니 다.특수 필드 5.1.불필요 한 필드 는 공간 으로 시간 을 바 꾸 는 것 입 니 다.만약 에 큰 표 조회 에서 join 의 기본 표 가 자주 필요 하고 이 데 이 터 는 대체적으로 변 하지 않 는 다.예 를 들 어 사람의 이름,도시 의 이름 등 이다.기본 표 가 바 뀌 면 관련 된 모든 중복 표를 업데이트 해 야 한다.5.2.분할 필드 가 특정한 필드 의 특정한 부분 으로 검색 하고 모 으 기(substring()가 자주 나타 나 면 이 부분 을 독립 시 키 는 것 을 고려 할 수 있다.예 를 들 어 성명 에서 각 성씨 의 수 를 통계 하면 한 필드 가 아 닌 성과 이름 에 따라 각각 저장 하 는 것 을 고려 할 수 있다.그리고 일부 상하 구조의 실현 도 서로 다른 등급 을 서로 다른 필드 에 두 는 것 을 고려 할 수 있다.5.3.BLOB 와 CLOB 와 같은 필드 는 일반적인 데이터 양 이 많 기 때문에 데이터 베 이 스 를 디자인 할 때 외부 연결 만 저장 할 수 있 고 데 이 터 는 다른 방식 으로 저장 하 는 것 을 권장 합 니 다.예 를 들 어 시스템 파일 등 입 니 다.6.특수 6.1.표 분할 은 한 표 에 많은 열 이 있 지만 평소에 조회 와 집계 에 참여 하 는 열 이 많 지 않다.이때 표 를 두 개의 표 로 나 누 는 것 을 고려 할 수 있다.하 나 는 자주 사용 하 는 필드 이 고 다른 하 나 는 거의 사용 되 지 않 는 필드 이다.6.2 비 사무 표 형식 MySQL 을 사용 하여 다양한 표 유형 을 지원 하 는데 그 중에서 InnoDB 유형 은 사물 을 지원 하 는 반면 MyISAM 유형 은 지원 하지 않 지만 MyISAM 속도 가 빠르다.일부 데이터,예 를 들 어 지리 행정 구분,민족 등 업무 에 참여 할 수 없 는 데 이 터 는 MyISAM 유형의 표를 사용 하 는 것 을 고려 할 수 있다.그러나 이 노 DB 의 시 계 는 마 이 ISAM 표 데이터 로 외부 키 로 제약 할 수 없 게 된다.MyISAM 표 가 참여 하 는 사 무 는 InnoDB 표 가 정상적으로 제출 되 고 스크롤 백 될 수 있 으 나 MyISAM 표 에 영향 을 주지 않 습 니 다.

좋은 웹페이지 즐겨찾기