검색 최적화 활성화 및 비활성화하기

검색 최적화를 활성화하려면 필요한 권한을 가진 역할을 사용한 다음 ALTER TABLEADD SEARCH OPTIMIZATION 명령을 사용하여 전체 테이블이나 특정 열에 대해 검색 최적화를 활성화하십시오.

필수 액세스 제어 권한

테이블에 대한 검색 최적화를 추가하거나 구성하거나 제거하려면 다음 권한이 있어야 합니다.

  • 테이블에 대한 OWNERSHIP 권한.

  • 테이블이 포함된 스키마에 대한 ADD SEARCH OPTIMIZATION 권한. 이 권한을 부여하는 방법은 다음과 같습니다.

    GRANT ADD SEARCH OPTIMIZATION ON SCHEMA <schema_name> TO ROLE <role>
    
    Copy

쿼리에서 검색 최적화 서비스를 사용하려면 테이블에 대한 SELECT 권한만 있으면 됩니다.

추가 권한은 필요하지 않습니다. SEARCH OPTIMIZATION은 테이블 속성이므로, 테이블을 쿼리할 때 자동으로 감지되어 사용(해당되는 경우)됩니다.

검색 최적화 구성하기

참고

큰 테이블(테라바이트(TB) 이상의 데이터가 포함된 테이블)에 검색 최적화를 추가하면 짧은 시간 내에 크레딧 사용이 즉시 증가할 수 있습니다.

테이블에 검색 최적화를 추가하면 유지 관리 서비스가 즉시 백그라운드에서 테이블에 대한 검색 액세스 경로를 구축합니다. 테이블이 크면 유지 관리 서비스에서 이 작업을 대규모로 병렬 처리하므로 짧은 시간 내에 비용이 증가할 수 있습니다.

큰 테이블에 검색 최적화를 추가하기 전, 비용 예상하기 를 수행하여 예상 비용을 확인할 수 있습니다.

검색 최적화를 활성화하면 전체 테이블 또는 테이블의 특정 열에 대해 활성화할 수 있습니다.

  • 전체 테이블에 대해 검색 최적화를 활성화하면 적합한 모든 열에 대한 포인트 조회 쿼리를 할 수 있게 됩니다.

    전체 테이블에 대해 검색 최적화를 활성화하려면 ON 절 없이 ALTER TABLEADD SEARCH OPTIMIZATION 명령을 사용하십시오.

  • 특정 열에 대한 검색 최적화를 활성화하면 쿼리에서 자주 사용하지 않는 열에 대한 검색 액세스 경로를 생성하는 데 크레딧을 지출하지 않아도 되고, 각 열에 대해 최적화할 추가 쿼리 유형을 선택할 수도 있으므로 성능을 더욱 향상할 가능성이 커집니다.

    특정 열에 대한 검색 최적화를 활성화하여 최적화할 쿼리 유형을 지정하려면 ALTER TABLE … ADD SEARCH OPTIMIZATION 명령에서 ON 절 을 사용하십시오. ADD SEARCH OPTIMIZATION의 ON 절에서 검색 최적화를 위해 활성화해야 하는 열을 지정합니다. 지정된 열에 대해 검색 최적화를 활성화할 때 검색 방법도 지정할 수 있습니다(예: 같음 및 IN 검색의 경우 EQUALITY, GEOGRAPHY 검색의 경우 GEO, 또는 하위 문자열 검색의 경우 SUBSTRING).

일반적으로, 특정 열에 대해서만 검색 최적화를 활성화하는 것이 가장 좋습니다.

다음 섹션에서는 테이블에 대한 검색 최적화 구성 방법을 설명합니다.

검색 최적화를 구성한 후에는 구성을 검사하여 올바른지 확인할 수 있습니다.

검색 최적화가 충분한 이점을 제공하지 않는 것으로 파악한 경우 특정 열이나 전체 테이블에서 검색 최적화를 제거할 수 있습니다.

특정 열의 검색 최적화 활성화하기

특정 열에 대한 검색 최적화를 구성하려면 ON 절과 함께 ALTER TABLEADD SEARCH OPTIMIZATION 명령을 사용하십시오.

참고

이 명령을 실행할 때 테이블에 검색 최적화를 추가할 수 있는 권한 이 있는 역할을 사용합니다.

ON 절은 특정 열에 대한 검색 최적화를 구성하도록 지정합니다. 구문에 대한 자세한 내용은 ALTER TABLE … ADD SEARCH OPTIMIZATION에 관한 섹션 을 참조하십시오.

참고

테이블의 적용 가능한 모든 열에 같음 조건자와 IN 조건자에 대한 검색 최적화만 적용하려면 전체 테이블에 대한 검색 최적화 활성화하기 섹션을 참조하십시오.

이 명령을 실행한 후 검색 최적화를 위해 열이 구성되었는지 확인 할 수 있습니다.

다음 섹션에는 검색 최적화를 위한 구성을 지정하는 방법을 보여주는 예가 포함됩니다.

예: 특정 열에 대해 같음 조건자와 IN 조건자 지원

테이블 t1 의 열 c1, c2, c3 에 대한 같음 조건자로 검색을 최적화하려면 다음 문을 실행하십시오.

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1, c2, c3);
Copy

ON 절에서 동일한 검색 방법을 두 번 이상 지정할 수도 있습니다.

-- This statement is equivalent to the previous statement.
ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1), EQUALITY(c2, c3);
Copy

예: 적용 가능한 모든 열에 대해 같음 조건자와 IN 조건자 지원

테이블의 적용 가능한 모든 열에 대한 같음 조건자로 검색을 최적화하려면 다음 문을 실행하십시오.

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(*);
Copy

다음 사항을 참고하십시오.

예: 다양한 유형의 조건자 지원

c1c2 열에 대한 같음 조건자를 사용한 검색과 열 c3 에 대한 하위 문자열 검색을 최적화하려면 다음 문을 실행하십시오.

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1, c2), SUBSTRING(c3);
Copy

예: VARIANT의 필드에 대해 같음 조건자와 IN 조건자 지원

VARIANT 열 c4 의 필드 user 에 중첩된 VARIANT 필드 uuid 에 대한 같음 조건자로 검색을 최적화하려면 다음 문을 실행하십시오.

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c4:user.uuid);
Copy

예: 지리 공간 함수 지원

c1 열의 GEOGRAPHY 오브젝트와 함께 지리 공간 함수를 사용하는 조건자로 검색을 최적화하려면 다음 문을 실행하십시오.

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON GEO(c1);
Copy

전체 테이블에 대한 검색 최적화 활성화하기

지원되는 데이터 타입(VARIANT 및 GEOGRAPHY 제외)의 모든 열에 대해 EQUALITY를 지정하려면 ON 절 없이 ALTER TABLEADD SEARCH OPTIMIZATION 명령을 사용하십시오.

참고

이 명령을 실행할 때 테이블에 검색 최적화를 추가할 수 있는 권한 이 있는 역할을 사용합니다.

예:

alter table test_table add search optimization;
Copy

구문에 대한 자세한 내용은 ALTER TABLE에서의 검색 최적화 섹션 을 참조하십시오.

이 명령을 실행한 후 검색 최적화를 위해 열이 구성되었는지 확인 할 수 있습니다.

이후에 추가되는 열에 미치는 영향

ON 절 없이 ALTER TABLE … ADD SEARCH OPTIMIZATION 명령을 실행하면 이후에 테이블에 추가되는 열도 전부 EQUALITY에 대한 최적화를 위해 구성됩니다.

하지만 같은 테이블에서 ON 절이 있는 ALTER TABLE … { ADD | DROP } SEARCH OPTIMIZATION을 실행하면 이후에 테이블에 추가되는 열은 EQUALITY에 대해 자동으로 구성되지 않습니다. EQUALITY에 대해 이처럼 새로 추가된 열을 구성하려면 ALTER TABLE … ADD SEARCH OPTIMIZATION ON …을 실행해야 합니다.

테이블이 검색 최적화를 위해 구성되었는지 확인하기

테이블과 그 열이 검색 최적화를 위해 구성되었는지 확인하는 방법:

  1. 테이블과 해당 열에 대한 검색 최적화 구성을 표시합니다.

  2. SHOW TABLES 명령을 실행하여 검색 최적화가 추가되었는지 확인하고 테이블의 최적화 정도를 확인합니다.

    예:

    SHOW TABLES LIKE '%test_table%';
    
    Copy

    다음 명령의 출력에서:

    • SEARCH_OPTIMIZATION이 ON 인지 확인합니다. 이는 검색 최적화가 추가되었음을 나타냅니다.

    • SEARCH_OPTIMIZATION_PROGRESS의 값을 확인합니다. 이는 현재까지 최적화된 테이블의 백분율을 지정합니다.

      검색 최적화가 처음으로 테이블에 추가되면 성능상의 이점이 즉시 나타나지 않습니다. 검색 최적화 서비스가 백그라운드에서 데이터 채우기를 시작합니다. 유지관리가 테이블의 현재 상태에 근접할 수록 더 많은 이점이 점점 나타납니다.

      검색 최적화가 작동하는지 확인하기 위해 쿼리를 실행하기 전, 테이블이 완전히 최적화되었음이 표시될 때까지 대기합니다.

  3. 쿼리를 실행하여 검색 최적화가 작동하는지 확인합니다.

    Snowflake 최적화 프로그램은 특정 쿼리에서의 검색 최적화 서비스를 사용 시점을 자동으로 선택합니다. 사용자는 검색 최적화가 사용되는 쿼리를 제어할 수 없습니다.

    검색 최적화 서비스가 최적화를 수행할 수 있도록 설계된 쿼리를 선택합니다. 검색 최적화의 이점을 활용할 수 있는 쿼리 식별하기 섹션을 참조하십시오.

  4. 웹 UI에서 이 쿼리에 대한 쿼리 계획을 확인하고 쿼리 노드 《검색 최적화 액세스》가 쿼리 계획의 일부에 해당하는지 확인합니다.

테이블에 대한 검색 최적화 구성 표시하기

테이블에 대한 검색 최적화 구성을 표시하려면 DESCRIBE SEARCH OPTIMIZATION 명령을 사용하십시오.

예를 들어, 다음 문을 실행하여 열에 대한 검색 최적화를 구성한다고 가정하겠습니다.

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1);
Copy

DESCRIBE SEARCH OPTIMIZATION을 실행하면 다음 출력이 생성됩니다.

DESCRIBE SEARCH OPTIMIZATION ON t1;

+---------------+----------+--------+------------------+--------+
| expression_id |  method  | target | target_data_type | active |
+---------------+----------+--------+------------------+--------+
| 1             | EQUALITY | C1     | NUMBER(38,0)     | true   |
+---------------+----------+--------+------------------+--------+
Copy

특정 열 또는 전체 테이블에서 검색 최적화 제거하기

특정 열에 대한 검색 최적화 구성을 제거하거나 전체 테이블에서 SEARCH OPTIMIZATION 속성을 제거할 수 있습니다.

특정 열의 검색 최적화 삭제하기

특정 열에 대한 검색 최적화 구성을 삭제하려면 ON 절과 함께 ALTER TABLEDROP SEARCH OPTIMIZATION 명령을 사용하십시오.

예를 들어, DESCRIBE SEARCH OPTIMIZATION 명령을 실행하면 다음 식이 인쇄된다고 가정하겠습니다.

DESCRIBE SEARCH OPTIMIZATION ON t1;

+---------------+-----------+-----------+-------------------+--------+
| expression_id |  method   | target    | target_data_type  | active |
+---------------+-----------+-----------+-------------------+--------+
|             1 | EQUALITY  | C1        | NUMBER(38,0)      | true   |
|             2 | EQUALITY  | C2        | VARCHAR(16777216) | true   |
|             3 | EQUALITY  | C4        | NUMBER(38,0)      | true   |
|             4 | EQUALITY  | C5        | VARCHAR(16777216) | true   |
|             5 | EQUALITY  | V1        | VARIANT           | true   |
|             6 | SUBSTRING | C2        | VARCHAR(16777216) | true   |
|             7 | SUBSTRING | C5        | VARCHAR(16777216) | true   |
|             8 | GEO       | G1        | GEOGRAPHY         | true   |
|             9 | EQUALITY  | V1:"key1" | VARIANT           | true   |
|            10 | EQUALITY  | V1:"key2" | VARIANT           | true   |
+---------------+-----------+-----------+-------------------+--------+
Copy

c2 의 하위 문자열에 대한 검색 최적화를 삭제하려면 다음 문을 실행하십시오.

ALTER TABLE t1 DROP SEARCH OPTIMIZATION ON SUBSTRING(c2);
Copy

c5 의 모든 메서드에 대한 검색 최적화를 삭제하려면 다음 문을 실행하십시오.

ALTER TABLE t1 DROP SEARCH OPTIMIZATION ON c5;
Copy

c5 는 같음 검색과 하위 문자열 검색을 최적화하도록 구성되어 있으므로 위의 문은 c5 에 대한 같음 검색과 하위 문자열 검색을 위한 구성을 삭제합니다.

c1 에서 같음 검색 최적화를 삭제하고 식 ID 68 로 지정된 구성을 삭제하려면 다음 문을 실행하십시오.

ALTER TABLE t1 DROP SEARCH OPTIMIZATION ON EQUALITY(c1), 6, 8;
Copy

구문에 대한 자세한 내용은 ALTER TABLE … DROP SEARCH OPTIMIZATION에 대한 섹션 을 참조하십시오.

테이블에서 검색 최적화 제거하기

테이블에서 SEARCH OPTIMIZATION 속성을 제거하는 방법:

  1. 테이블에서 검색 최적화를 제거할 수 있는 권한 이 있는 역할로 전환합니다.

  2. ON 절 없이 ALTER TABLEDROP SEARCH OPTIMIZATION 명령을 실행합니다.

    ALTER TABLE [IF EXISTS] <table_name> DROP SEARCH OPTIMIZATION;
    
    Copy

    예:

    alter table test_table drop search optimization;
    
    Copy

자세한 내용은 ALTER TABLE … DROP SEARCH OPTIMIZATION에 대한 섹션 을 참조하십시오.