일반적인 상황: 1. 함수 또는 연산 사용 2. 암시적 유형 변환 3. 같지 않음(!= 또는 <>) 사용 4. LIKE 연산자 사용 5. OR 조건 6. NULL 값 7. 낮은 인덱스 선택성 8. 복합 인덱스의 가장 왼쪽 접두사 원칙 9. FORCE INDEX 및 IGNORE INDEX.
MySQL의 인덱스는 쿼리 성능을 최적화하는 데 도움이 되는 중요한 도구이지만 경우에 따라 인덱스가 예상대로 작동하지 않을 수 있습니다. 즉, 인덱스가 "아웃"됩니다.
다음은 MySQL 인덱스 실패를 일으키는 몇 가지 일반적인 상황입니다.
: 인덱스된 열에 대해 함수를 사용하거나 작업을 수행하면 일반적으로 인덱스가 적용되지 않습니다. 예:
SELECT * FROM users WHERE YEAR(date_column) = 2023;
여기서 YEAR(date_column)은 인덱스를 무효화합니다.
2. 암시적 유형 변환: 쿼리 조건에 암시적 유형 변환이 포함된 경우 인덱스가 사용되지 않을 수 있습니다. 예를 들어 열 유형이 문자열이지만 숫자로 쿼리되는 경우 또는 그 반대의 경우입니다.
SELECT * FROM users WHERE id = '123'; -- 假设id是整数类型
같지 않음(!= 또는 <>) 사용: 같지 않음 연산자를 사용하면 일반적으로 인덱스의 여러 값을 스캔해야 하므로 인덱스 오류가 발생합니다.
SELECT * FROM users WHERE age != 25;
LIKE 연산자를 사용하고 와일드카드로 시작: LIKE 연산자를 사용하고 패턴이 와일드카드 %로 시작하는 경우 일반적으로 인덱스가 적용되지 않습니다.
SELECT * FROM users WHERE name LIKE '%Smith%';
OR 조건: OR 조건을 사용할 때 관련된 모든 열이 색인화되지 않거나 조건 중 하나가 색인 실패를 초래하는 경우 전체 쿼리에서 색인을 사용하지 못할 수 있습니다.
SELECT * FROM users WHERE age = 25 OR name = 'John';
NULL值:如果索引列包含NULL值,并且查询条件涉及到NULL,索引可能不会生效。
SELECT * FROM users WHERE age IS NULL;
为了避免索引失效,建议:
위 내용은 mysql 인덱스 실패의 여러 상황의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!