본문 바로가기
MySql

MySQL에서 함수 기반 인덱스를 가질 수 있습니까?

by 베이스 공부 2021. 2. 10.
반응형

Oracle에서는 함수를 기반으로 색인화하는 것이 가능하다는 것을 기억합니다. SUBSTRING (id, 1,8) .

MySQL이이를 지원합니까? 그렇지 않다면 대안이 있습니까?

 

해결 방법

 

아니요, 일반적인 의미는 아닙니다. 5.6 (이 답변이 처음 작성되었을 때 최신 버전)에도이 기능이 있다고 생각하지 않습니다. 8.0.13 이상은 이제 기능 색인을 지원하므로 아래에 설명 된 트리거 방법없이 필요한 것을 얻을 수 있습니다.


이전 버전의 mysql 을 실행중인 경우 열의 선행 부분 만 사용할 수 있습니다 (이 기능은 긴 시간), 그러나 두 번째 또는 후속 문자 또는 다른 더 복잡한 기능에서 시작하는 것은 아닙니다.

예를 들어 다음은 이름의 처음 5자를 사용하여 색인을 만듭니다.

create index name_first_five on cust_table (name(5));

더 복잡한 표현식의 경우 색인 생성이 가능한 데이터가 포함 된 다른 열이있는 다음 삽입 / 업데이트 트리거를 사용하여 올바르게 채워지는 것과 유사한 효과를 얻을 수 있습니다.

중복 데이터를 위해 낭비되는 공간을 제외하고는 거의 동일합니다.

그리고 기술적으로는 3NF를 위반하지만 트리거를 사용하여 데이터를 동기화 상태로 유지함으로써 완화됩니다 (성능 향상을 위해 자주 수행되는 작업입니다).

 

참조 페이지 https://stackoverflow.com/questions/10595037

 

 

반응형

댓글