> 데이터 베이스 > SQL > SQL 최적화 방법은 무엇입니까?

SQL 최적화 방법은 무엇입니까?

王林
풀어 주다: 2020-07-01 15:55:05
원래의
8934명이 탐색했습니다.

SQL 최적화 방법: 1. [select *] 사용을 피하십시오. 쓸모 없는 필드는 쿼리 효율성을 감소시킵니다. 2. in과 not in을 사용하지 마십시오. 대신에 존재하는 것 중에서 선택할 수 있습니다. 3. or를 사용하지 말고 선택할 수 있습니다. 노조 교체.

SQL 최적화 방법은 무엇입니까?

SQL 최적화 방법:

(권장 학습: mysql 튜토리얼)

1 테이블에 인덱스를 생성하고 where 및 group by에서 사용하는 필드에 우선 순위를 부여합니다.

2. select *를 사용하지 마세요. 쓸모 없는 필드를 반환하면 쿼리 효율성이 떨어집니다. 다음과 같습니다:

SELECT * FROM t
로그인 후 복사

최적화 방법: * 대신 특정 필드를 사용하고, 사용한 필드만 반환합니다.

3. in과 not in을 사용하지 마십시오. 그러면 데이터베이스 엔진이 인덱스를 포기하고 전체 테이블 스캔을 수행하게 됩니다. 다음과 같습니다:

SELECT * FROM t WHERE id IN (2,3)
SELECT * FROM t1 WHERE username IN (SELECT username FROM t2)
로그인 후 복사

최적화 방법: 연속된 값인 경우 사이로 대체될 수 있습니다. 다음과 같습니다:

SELECT * FROM t WHERE id BETWEEN 2 AND 3
로그인 후 복사

서브 쿼리인 경우,exists로 대체될 수 있습니다. 다음과 같습니다:

SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t2 WHERE t1.username = t2.username)
로그인 후 복사

4. 또는 사용을 피하십시오. 그러면 데이터베이스 엔진이 인덱스를 포기하고 전체 테이블 스캔을 수행하게 됩니다. 다음과 같습니다:

SELECT * FROM t WHERE id = 1 OR id = 3
로그인 후 복사

최적화 방법: or 대신 Union을 사용할 수 있습니다. 다음과 같습니다:

SELECT * FROM t WHERE id = 1
UNION
SELECT * FROM t WHERE id = 3
로그인 후 복사

(PS: 예시처럼 or 양쪽의 필드가 동일한 경우. Union이 인덱스를 스캔하거나, 테이블 전체를 스캔하더라도 두 방법의 효율성은 거의 동일한 것 같습니다. )

5. 필드 시작 부분에 퍼지 쿼리가 발생하지 않도록 하세요. 이로 인해 데이터베이스 엔진이 인덱스를 포기하고 전체 테이블 스캔을 수행하게 됩니다.

SELECT * FROM t WHERE username LIKE '%li%'
로그인 후 복사

최적화 방법: 필드 뒤에 퍼지 쿼리를 사용해 보세요. 다음과 같습니다:

SELECT * FROM t WHERE username LIKE 'li%'
로그인 후 복사

6. Null 값을 판단하지 마십시오. 이로 인해 데이터베이스 엔진이 인덱스를 포기하고 전체 테이블 스캔을 수행하게 됩니다. 다음과 같습니다:

SELECT * FROM t WHERE score IS NULL
로그인 후 복사

최적화 방법: 필드에 기본값 0을 추가하고 0값을 판단할 수 있습니다.

SELECT * FROM t WHERE score = 0
로그인 후 복사

7. where 조건의 등호 왼쪽에서 표현식 및 함수 연산을 수행하지 마십시오. 그러면 데이터베이스 엔진이 인덱스를 포기하고 전체 테이블 스캔을 수행하게 됩니다. 다음과 같습니다:

SELECT * FROM t2 WHERE score/10 = 9
SELECT * FROM t2 WHERE SUBSTR(username,1,2) = 'li'
로그인 후 복사

최적화 방법: 표현식 및 함수 연산을 등호 오른쪽으로 이동할 수 있습니다.

SELECT * FROM t2 WHERE score = 10*9
SELECT * FROM t2 WHERE username LIKE 'li%'
로그인 후 복사

8. 데이터 양이 많은 경우 1=1인 조건은 사용하지 마세요. 일반적으로 쿼리 조건 조합을 용이하게 하기 위해 기본적으로 이 조건을 사용하며 데이터베이스 엔진은 인덱스를 포기하고 전체 테이블 스캔을 수행합니다.

SELECT * FROM t WHERE 1=1
로그인 후 복사

최적화 방법: SQL을 어셈블할 때 코드를 사용하여 판단합니다. where가 없으면 where를 추가하고, where가 있으면 and를 추가합니다.

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

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