SQL 최적화 방법: 1. [select *] 사용을 피하십시오. 쓸모 없는 필드는 쿼리 효율성을 감소시킵니다. 2. in과 not in을 사용하지 마십시오. 대신에 존재하는 것 중에서 선택할 수 있습니다. 3. or를 사용하지 말고 선택할 수 있습니다. 노조 교체.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!