>  기사  >  데이터 베이스  >  mysql의 select 및 where 절 최적화 요약

mysql의 select 및 where 절 최적화 요약

不言
不言앞으로
2019-01-19 10:18:553669검색

이 기사는 MySQL의 select 및 where 절 최적화에 대한 요약을 제공합니다. 이는 특정 참조 값을 가지고 있으므로 도움이 될 수 있습니다.

데이터베이스 최적화:

1. 최적화는 단일 SQL 문, 전체 애플리케이션, 단일 데이터베이스 서버 또는 여러 네트워크 데이터베이스 서버 수준에서 수행될 수 있습니다.
2. 데이터베이스 성능은 데이터베이스의 여러 요소에 따라 달라집니다. 테이블, 쿼리 및 구성 설정과 같은 수준
3. 데이터베이스 수준에서 최적화, 하드웨어 수준에서 최적화, 이식성과 성능의 균형
4. 적합한 구조, 많은 수의 테이블로 빈번한 업데이트를 수행하는 적합한 데이터 유형( 소수의 열) ); 소수의 테이블(여러 열)로 대량의 데이터를 분석하는 애플리케이션. 적절한 스토리지 엔진 및 인덱스를 선택하세요.
5. 압축은 읽기 전용 MyISAM 테이블뿐만 아니라 다양한 워크로드에도 적합합니다. . 적절한 잠금 전략을 선택하세요. InnoDB 스토리지 엔진은 대부분의 잠금 문제를 처리할 수 있습니다
7. 구성된 기본 메모리 영역은 InnoDB 버퍼 풀과 MyISAM 키 캐시입니다.
8. 이 기술은 where 절의 열에 인덱스를 설정하는 데에도 적용할 수 있습니다. 인덱스는 조인 및 외래 키와 같은 여러 열을 참조하는 데 특히 중요합니다. sub 문장 최적화:

1. 함수 호출 등 쿼리의 구조를 조정하고, 결과 집합의 각 행에 대해 한 번만 호출하고, 테이블의 각 행에 대해 한 번만 호출합니다. 2. 쿼리에서 전체 테이블 스캔
3. 정기적으로 ANALYZE TABLE 문을 사용하여 테이블 통계를 최신 상태로 유지

4. 각 테이블에 특정한 스토리지 엔진의 튜닝 기술, 인덱싱 기술 및 구성 매개 변수 이해

5. InnoDB에 대한 단일 쿼리 트랜잭션 최적화 테이블
6. EXPLAIN 계획을 읽고 인덱스, WHERE 절, 조인 절 등을 조정하여 특정 쿼리의 내부 세부 정보를 조사합니다.
7. MySQL에서 캐싱에 사용하는 메모리 영역의 크기와 속성을 조정합니다. InnoDB 버퍼 풀, MyISAM 키 캐시 및 MySQL 쿼리 캐시
8.where 조건을 효과적으로 사용하여 불필요한 괄호 제거, 상수 접기, 상수 조건 제거, 불필요한 논리 감소
9 인덱스에서 사용하는 상수 표현식은 한 번만 계산됩니다. 10.count(*)는 테이블 정보에서 직접 쿼리합니다. 테이블이 하나만 있는 경우 GROUP BY 또는 집계 함수(COUNT(), MIN()를 사용하지 않는 경우에도 마찬가지입니다. 등), HAVING은 WHERE
12와 병합됩니다. 단 하나의 행 또는 빈 테이블입니다. 여기서 절은 기본 키 또는 고유 인덱스에 적용됩니다
13. table, 그러면 연결할 때 테이블이 선호됩니다
14. order by 절과 group by 절이 다르거나 다른 테이블과 다를 경우 임시 테이블이 생성됩니다
15 SQL_SMALL_RESULT 수정자를 사용하면 MySQL은 다음을 사용합니다. 임시 메모리 테이블
16. MySQL은 데이터 파일을 참조하지 않고도 인덱스에서 행을 읽을 수 있습니다.
17. 각 행을 출력하기 전에 HAVING 절과 일치하지 않는 행은 건너뜁니다.

다음 테이블은 상수로 사용됩니다. 테이블:

SELECT * FROM t WHERE primary_key=1;
SELECT * FROM t1,t2  
WHERE t1.primary_key=1 AND t2.primary_key=t1.id;

다음 쿼리는 매우 빠르게 실행됩니다.
SELECT COUNT(*) FROM tbl_name;
SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;
SELECT MAX(key_part2) FROM tbl_name
  WHERE key_part1=constant;
SELECT ... FROM tbl_name
  ORDER BY key_part1,key_part2,... LIMIT 10;
SELECT ... FROM tbl_name
  ORDER BY key_part1 DESC, key_part2 DESC, ... LIMIT 10;
인덱스 열이 숫자라고 가정하면 다음 쿼리는 인덱스 트리만 사용합니다.
SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;
SELECT COUNT(*) FROM tbl_name
  WHERE key_part1=val1 AND key_part2=val2;
  SELECT key_part2 FROM tbl_name GROUP BY key_part1;

다음 쿼리는 인덱스를 사용하여 정렬된 순서로 데이터를 검색하며 별도의 정렬이 필요하지 않습니다.

아아아아

위 내용은 mysql의 select 및 where 절 최적화 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제