> 데이터 베이스 > SQL > SQL 최적화의 여러 방법

SQL 최적화의 여러 방법

silencement
풀어 주다: 2019-06-05 16:04:19
원래의
27284명이 탐색했습니다.

SQL 최적화의 여러 방법

1. 쿼리를 최적화하려면 전체 테이블 스캔을 피하십시오. 먼저 where 및 order by와 관련된 열에 인덱스를 생성하는 것을 고려하십시오.

2. where 절의 필드에 대한 null 값 판단을 피하십시오. 그렇지 않으면 엔진이 인덱스 사용을 포기하고 다음과 같이 전체 테이블 스캔을 수행합니다.

select id from t where num is null
로그인 후 복사

num에 기본값을 0으로 설정하여 보장할 수 있습니다. 열에 null 값이 없으면 다음과 같이 쿼리하세요.

select id from t where num=0
로그인 후 복사

3. where 절에 != 또는 <> 연산자를 사용하지 마세요. 그렇지 않으면 엔진이 인덱스 사용을 포기합니다. 그리고 전체 테이블 스캔을 수행합니다.

4 조건을 연결하기 위해 where 절에 or 를 사용하지 마세요. 그렇지 않으면 엔진이 인덱스 사용을 포기하고 다음과 같이 전체 테이블 스캔을 수행합니다.

select id from t where num=10 or num=20
로그인 후 복사

다음과 같이 쿼리할 수 있습니다:

select id from t where num=10
union all
select id from t where num=20
로그인 후 복사

5.in 및 not In도 주의해서 사용해야 합니다. 그렇지 않으면 다음과 같이 전체 테이블 스캔이 발생합니다.

select id from t where num in(1,2,3)
로그인 후 복사

연속 값의 경우 사이에 사용할 수 있으면 in을 사용하지 마세요:

select id from t where num between 1 and 3
로그인 후 복사

6. 다음 쿼리도 전체 테이블 스캔을 발생시킵니다.

select id from t where name like &#39;%abc%&#39;
로그인 후 복사

7. where 절의 필드에 표현식 작업을 수행하지 마세요. 그러면 엔진이 인덱스 사용을 포기하고 전체 테이블 스캔을 수행하게 됩니다. 예:

select id from t where num/2=100
로그인 후 복사


select id from t where num=100*2
로그인 후 복사

8로 변경해야 합니다. where 절의 필드에 기능적 작업을 수행하면 엔진이 인덱스 사용을 포기하고 전체 테이블 스캔을 수행하게 됩니다. 예:

select id from t where substring(name,1,3)=&#39;abc&#39;--name以abc开头的id
로그인 후 복사


select id from t where name like &#39;abc%&#39;
로그인 후 복사

9로 변경되어야 합니다. where 절의 "=" 왼쪽에서 함수, 산술 연산 또는 기타 표현식 연산을 수행하지 마십시오. 그렇지 않으면 시스템이 수행하지 못할 수 있습니다. 인덱스를 올바르게 사용하십시오.

10. 인덱스 필드를 조건으로 사용할 때 인덱스가 복합 인덱스인 경우 시스템이 인덱스를 사용하는지 확인하기 위해 인덱스의 첫 번째 필드를 조건으로 사용해야 합니다.

그렇지 않으면 인덱스가 작동하지 않습니다. 사용되며, 필드 순서는 인덱스 순서와 최대한 일치해야 합니다.

11. 의미 없는 쿼리를 작성하지 마세요. 예를 들어 빈 테이블 구조를 생성해야 하는 경우:

select col1,col2 into #t from t where 1=0
로그인 후 복사

이 유형의 코드는 결과 집합을 반환하지 않지만 시스템 리소스를 소비하게 됩니다. 이거:

create table #t(...)
로그인 후 복사

위 내용은 SQL 최적화의 여러 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿