mysql에서 인덱스를 사용할 때는 주의해야 합니다. 1. 열의 NULL 값은 인덱스에 포함되지 않습니다. 2. 문자열을 인덱싱할 때 접두사 길이를 지정해야 합니다. 3. MySQL 쿼리는 하나만 사용합니다. index; 4, 열에 대한 작업을 수행하지 마십시오. 5. NOT IN 작업을 사용하지 마십시오.
참고 사항:
(권장 튜토리얼: mysql 튜토리얼)
1 인덱스에는 NULL 값이 있는 열이 포함되지 않습니다.
열에 NULL 값이 포함되어 있으면 인덱스에 포함되지 않습니다. index , 복합 인덱스의 한 열에 NULL 값이 포함되어 있으면 이 열은 이 복합 인덱스에 유효하지 않습니다. 따라서 데이터베이스를 설계할 때 해당 필드의 기본값이 NULL이 되도록 해서는 안 됩니다.
2. 문자열을 색인화하려면 짧은 색인
을 사용하세요. 가능하면 접두사 길이를 지정해야 합니다. 예를 들어 CHAR(255) 열이 있는 경우 대부분의 값이 처음 10자 또는 20자 내에서 고유한 경우 전체 열을 인덱싱하지 마세요. 짧은 인덱스는 쿼리 속도를 향상시킬 뿐만 아니라 디스크 공간과 I/O 작업을 절약합니다.
3. 인덱스 열 정렬
MySQL 쿼리는 하나의 인덱스만 사용하므로 where 절에 인덱스가 사용된 경우 순서대로의 열은 인덱스를 사용하지 않습니다. 따라서 데이터베이스의 기본 정렬이 요구 사항을 충족할 수 있으면 정렬 작업을 사용하지 마십시오. 필요한 경우 이러한 열에 대한 복합 인덱스를 만드는 것이 가장 좋습니다.
4. Like 문 연산
일반적으로 Like 연산을 사용해야 한다면 어떻게 사용하는지도 문제입니다. "%aaa%"는 인덱스를 사용하지 않지만 "aaa%"는 인덱스를 사용할 수 있습니다.
5. 다음과 같이 열
에 대해 작업을 수행하지 마십시오.
select * from users where YEAR(adddate)<2007;
는 각 행에 대해 작업을 수행하므로 인덱스 오류 및 전체 테이블 스캔이 발생하므로 다음과 같이 변경할 수 있습니다.
:
select * from users where adddate<‘2007-01-01';
6. NOT IN 및 <> 연산을 사용하지 마세요.
다음 문장에서는 인덱스를 사용합니다:
SELECT * FROM mytable WHERE username like'admin%'
다음 문장에서는 사용하지 않습니다:
SELECT * FROM mytable WHEREt Name like'%admin'
관련 권장 사항: php training
위 내용은 mysql에서 인덱스를 사용할 때 주의할 점은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!