mysql 인덱스 실패의 여러 경우: 1. 조건이 있거나 있는 경우 인덱스가 있는 조건이 있어도 사용되지 않습니다. 2. 다중 열 인덱스의 경우 첫 번째 부분이 사용되지 않습니다. 3. like 쿼리가 %로 시작하고 인덱스가 유효하지 않습니다. 4. 필드 유형이 문자열인 경우 조건의 데이터가 따옴표로 묶이지 않습니다.
(권장 튜토리얼: mysql 비디오 튜토리얼)
인덱스가 항상 적용되지는 않습니다. 예를 들어 다음 상황에서는 인덱스가 실패합니다.
1 조건이 있는 경우, 조건부 인덱스가 있어도 사용하지 않습니다(그래서 가급적 적게 사용하는 것이 좋습니다)
참고 : or를 사용하고 싶다면 or 조건의 각 열에만 인덱스를 추가하면 됩니다.
2. 다중 열 인덱스의 경우 첫 번째 인덱스가 아닌 경우 부분을 사용하면 색인이 사용되지 않습니다
3. like 쿼리는 %로 시작하는 경우 like 접두사가 %가 없고 접미사에 %가 있으면 색인이 유효하지 않습니다. 유효합니다.
4. 열 유형이 문자열 인 경우 데이터를 따옴표로 인용해야합니다. 그렇지 않으면 MySQL 인 인덱스가 사용되지 않습니다 전체 테이블 스캔을 사용하는 것이 인덱스를 사용하는 것보다 빠르다고 추정하면 인덱스가 사용되지 않습니다. 또한 'Handler_read%'와 같은 상태를 표시합니다. 인덱스를 사용하는 쿼리 handler_read_rnd_next: 값이 높을수록 쿼리가 비효율적임
1) 쿼리 조건이 없거나 쿼리 조건이 인덱스되지 않음
2 ) 선행 열이 쿼리 조건에 사용
3) 쿼리 개수는 대형 테이블의 대부분이므로 30% 이상이어야 합니다.
4) 인덱스 자체가 유효하지 않습니다
5) 쿼리 조건이 인덱스 열에 함수를 사용하거나 인덱스 열에 연산을 수행합니다. /,! 등) 오류 예: select * from test where id-1=9; 올바른 예: select * from test where
6) 작은 테이블 쿼리의 경우
7) Index를 사용하지 말라는 메시지
8) 통계가 비현실적입니다.
9) CBO 계산 비용이 너무 많이 듭니다. 실제로 위 상황도 포함되는데, 이는 테이블이 차지하는 블록이 인덱스보다 작다는 것을 의미한다.
10) 테이블의 tu_mdn 필드는 varchar2(20)로 정의되어 있지만, 이는 개발 시 자주 발생하는 실수입니다. as 숫자 유형이 where 조건과 함께 Oracle에 전달되어 인덱스가 실패하게 됩니다. 잘못된 예: select * from test where tu_mdn=13333333333; 올바른 예: select * from test where tu_mdn='13333333333';
12 ) 1,<> 2,별도>,<,(때때로 사용됨, 때로는 사용되지 않음)13, 앞에 퍼센트 기호가 있는 "%_"
14, 테이블이 분석되지 않았습니다.
15, 복합 인덱스의 첫 번째 위치가 아닌 인덱스 열을 별도로 인용합니다. 16, 문자 필드가 숫자인 경우 where 조건에 인용 부호를 추가하지 않습니다. 18, 존재하지 않습니다. 필드는 날짜 변수를 사용합니다. 또는 그 반대의 경우도 마찬가지입니다. 20, B-트리 인덱스는 null인 경우 이동하지 않고, null이 아닌 경우 이동하고, 비트맵 인덱스는 null인 경우 이동하고, null이 아닌 경우 21, 결합 인덱스는 null이 아닙니다. 특정 순서 없이 생성된 모든 인덱스 열이 사용됩니다. null인 경우 인덱스의 첫 번째 열과 함께 사용해야 합니다. 인덱스의 첫 번째 위치 조건이 null이면 다른 인덱스 열이 가능합니다. be는 null입니다(그러나 모든 열이 null을 만족해야 함). 또는 = 값, 인덱스의 첫 번째 위치가 값인 경우 다른 인덱스 열은 어떤 상황에서도 가능합니다(null = 값 포함). 위의 두 경우 모두 진행됩니다. 다른 상황에서는 진행되지 않습니다.
위 내용은 어떤 상황에서 mysql 인덱스가 실패합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!