MySQL의 기능 인덱스
Oracle과 같은 데이터베이스 관리 시스템에서 기능 인덱스를 사용하면 열에 적용된 특정 기능을 기반으로 인덱스를 생성할 수 있습니다. , 복잡한 쿼리에 대한 효율적인 검색 기능을 제공합니다. 예를 들어 Oracle은 SUBSTRING(id,1,8)과 같은 함수 기반 인덱싱을 지원합니다.
그러나 MySQL은 본질적으로 일반적인 의미의 함수 기반 인덱스를 지원하지 않습니다. 최신 버전(이 논의 당시 최대 5.6)에서도 MySQL에는 이 기능이 없습니다.
MySQL의 대안
MySQL은 기능을 직접 지원하지 않지만 기반 인덱스를 사용하는 경우 유사한 결과를 얻기 위한 대체 접근 방식이 있습니다.
선행 열 접두사 인덱싱:
MySQL을 사용하면 열의 앞부분을 인덱싱할 수 있지만 열 내의 임의 오프셋은 인덱싱할 수 없습니다. 예를 들어 다음과 같이 이름의 처음 5자를 사용하여 인덱스를 생성할 수 있습니다.
create index name_first_five on cust_table (name(5));
트리거가 있는 파생 열:
더 복잡한 표현식의 경우 원하는 색인 데이터가 포함된 별도의 열을 만들 수 있습니다. 그런 다음 삽입/업데이트 트리거를 사용하여 이 열을 채우고 데이터 일관성을 유지할 수 있습니다. 이는 기본적으로 원하는 인덱스 데이터의 미리 계산된 버전을 제공하여 기능 인덱스를 에뮬레이션합니다.
이 접근 방식은 데이터 저장 측면에서 일부 중복성을 도입하지만 비슷한 성능 이점을 얻습니다. 또한 트리거를 통한 데이터 동기화를 보장하여 제3정규형(3NF)의 잠재적 위반을 완화합니다.
위 내용은 MySQL은 Oracle과 같은 기능적 인덱스를 지원하며 대안은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!