", "!=" 등을 사용합니다."/> ", "!=" 등을 사용합니다.">

 >  기사  >  데이터 베이스  >  mysql 인덱스가 실패하는 상황은 무엇입니까?

mysql 인덱스가 실패하는 상황은 무엇입니까?

青灯夜游
青灯夜游원래의
2022-01-05 15:46:5557464검색

인덱스 실패 사례: 1. 유사 쿼리는 "%"로 시작합니다. 2. or 문 앞뒤에 인덱스가 사용되지 않습니다. 3. 첫 번째 열 인덱스가 결합된 인덱스에 사용되지 않습니다. 인덱스 컬럼에 NULL"이 사용되거나 "IS NOT NULL" 연산이 사용됩니다. 5. 인덱스 필드에 "not", "<>", "!=" 등을 사용합니다.

mysql 인덱스가 실패하는 상황은 무엇입니까?

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

인덱스는 데이터 테이블에 있는 하나 이상의 열로 구성된 특수 데이터베이스 구조로, 데이터 테이블의 특정 값이 있는 레코드를 빠르게 쿼리하는 데 사용할 수 있습니다. 이 섹션에서는 인덱스의 의미, 기능, 장점 및 단점에 대해 자세히 설명합니다.

인덱스를 사용하면 데이터 쿼리 시 기록된 정보를 모두 읽을 필요가 없고 인덱스 열만 쿼리하면 됩니다. 그렇지 않으면 데이터베이스 시스템은 일치를 위해 각 레코드의 모든 정보를 읽습니다.

색인은 신화사전의 발음 순서와 비교할 수 있습니다. 예를 들어 "ku"라는 단어를 찾으려면 발음 순서를 사용하지 않으면 400페이지에 달하는 사전에서 한 페이지씩 찾아야 합니다. 그러나 병음을 추출하여 표음순을 형성하는 경우에는 10페이지가 넘는 표음표에서 직접 찾아보면 된다. 이렇게 하면 많은 시간을 절약할 수 있습니다.

따라서 인덱스를 사용하면 데이터베이스의 쿼리 속도를 크게 향상시키고 데이터베이스 시스템의 성능을 효과적으로 향상시킬 수 있습니다.

인덱스 쿼리가 실패하는 여러 상황:

1 like가 %로 시작하는 경우, like 접두어에 %가 없고 접미어에 %가 있으면 인덱스가 유효합니다.

2. or 문 앞뒤에 인덱스가 사용되지 않습니다.

또는의 왼쪽 및 오른쪽 쿼리 필드 중 하나만 인덱스인 경우 인덱스는 또는 왼쪽 및 오른쪽 쿼리 필드가 모두 인덱스인 경우에만 유효합니다.

3. 결합 인덱스는 첫 번째 열 인덱스를 사용하는 대신 인덱스가 유효하지 않습니다.

4. 열 유형이 문자열인 경우 조건에서 데이터를 따옴표로 묶어야 합니다. 그렇지 않으면 인덱스가 사용되지 않습니다.

데이터 유형이 암시적으로 변환됩니다. varchar를 작은따옴표로 묶지 않으면 자동으로 int 유형으로 변환되어 인덱스가 무효화되고 전체 테이블 스캔이 발생할 수 있습니다.

5. 인덱스 열에 IS NULL 또는 IS NOT NULL 연산을 사용합니다.

인덱스는 null 값을 인덱싱하지 않으므로 이러한 작업은 인덱스를 사용할 수 없으며 숫자 유형의 경우 0보다 큰지 판단하거나 문자열 유형의 경우 기본값을 설정하고 판단하는 등 다른 방법으로 처리할 수 있습니다. 기본값과 같은지 여부입니다. (틀렸어요!)

위 오류에 대한 설명:

여기서 emp 테이블을 다시 생성하겠습니다

새 인덱스 만들기

인덱스 보기

SQL 문을 실행해 보세요

인덱스가 사용되는 것을 확인할 수 있습니다

요약: 인덱스 열에 IS NULL 또는 IS NOT NULL 연산을 사용하면 인덱스가 반드시 실패하지는 않습니다! ! !

6. 인덱스 필드에 not, <>, !=를 사용하세요.

불평등 연산자는 인덱스를 사용하지 않으므로 처리 시 전체 테이블 스캔만 생성됩니다. 최적화 방법: 키0을 키>0 또는 키

7. 인덱스 필드에서 계산 작업을 수행하고 필드에서 함수를 사용합니다. (인덱스는 emp(ename,empno,sal))

8. 전체 테이블 스캔 속도가 인덱스 속도보다 빠르면 mysql은 전체 테이블 스캔을 사용하고 인덱스는 무효가 됩니다.

mysql에서 전체 테이블 스캔을 사용하는 것이 인덱스를 사용하는 것보다 빠르다고 추정하는 경우 인덱스를 사용하지 마세요

[관련 권장 사항: mysql 비디오 튜토리얼]

위 내용은 mysql 인덱스가 실패하는 상황은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.