문제

누군가가 성배에서 멀티 칼럼 인덱스를 정의하는 방법을 설명 할 수 있습니까? 문서는 가장 희박합니다.

예를 들어 이것은 전혀 작동하지 않는 것 같습니다.http://grails.org/gorm+index+definitions

나는 이것으로 운이 좋았지 만 결과는 기껏해야 무작위로 보인다. 한 도메인 클래스에서 작동하는 정의는 다른 이름에 적용될 때 (물론 다른 이름으로).http://www.grails.org/doc/1.1/guide/single.html#5.5.2.6%20Database%20Indices

일부 작업 예와 설명은 크게 높이 평가 될 것입니다!

도움이 되었습니까?

해결책

멀티 컬럼 인덱스에 대해 저에게 적합한 솔루션은 다음과 같습니다.

class ClassName {
    String name
    String description
    String state

    static mapping = {
        name index: 'name_idx'
        description index: 'name_idx'
        state index: 'name_idx'
    }
}

이렇게하면 인덱스의 세 열이있는 'name_idx'라는 색인이 생성됩니다.

단점 : 열은 입력 한 순서가 아니라 알파벳 순서로 인덱스에 나열되어 있습니다.

다른 팁

인덱스 멀티 컬럼을 만들려면 쉼표 분리기가있는 열을 나열하십시오 (쉼표 이후 공간이 없음, 피하십시오. 이 버그. 두 번째 URL은 다음과 같이 지적합니다.

index:'Name_Idx, Address_Index'

공간과 함께; 작동해야합니다

index:'Name_Idx,Address_Index'

당신이 지적한 첫 번째 URL은 제안 된 변화였습니다 (나는 그것이 현재 구현되었다고 생각하지 않으며 그것이 얼마나 될 것인지 전혀 모른다).

afaik, the index 폐쇄 여기 구현되지 않았으므로 이러한 예제는 무시되어야합니다 (이 페이지는 실제 구현을 문서화하지 않고 가능한 구현을 논의하기위한 것입니다).

단일 열 색인을 정의하는 올바른 방법 name_idx a name 속성은

static mapping = {
      name index:'name_idx'
}

죄송하지만 다중 열 색인을 정의하는 방법을 모르겠습니다. 메일 링리스트를 성배합니다 여기서 답을 얻지 못한다면. 도메인 클래스에서 멀티 컬럼 인덱스를 직접 선언 할 수없는 가능성이없는 이벤트에서는 SQL 파일로 정의 할 수 있습니다. 이 SQL 파일은 init 폐쇄 Bootstrap.groovy

나는 멀티 컬럼 인덱스에서 열의 순서를 제어 할 수 있어야하고 독특하게 만들 수 있어야했습니다. Direct SQL을 사용하여 부트 스트랩에서 인덱스를 작성하여 Gorm / Hibernate 한계를 둘러었습니다.

class BootStrap {

    DataSource dataSource

    def init = { servletContext ->
        if (!MyModel.count()) { // new database
            createIndexes()
            ...
        }
    }

    private void createIndexes() {
        Sql sql = new Sql(dataSource)
        sql.execute("create unique index my_index on my_model(col1,col2);")
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top