- Categorias:
- Funções do sistema (Informações do sistema) 
SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS¶
Retorna os custos estimados para adicionar uma otimização de pesquisa a uma determinada tabela e configurar colunas específicas para a otimização de pesquisa.
Importante
Os cálculos de custo retornados pela função SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS são os melhores esforços. Os custos reais realizados podem variar significativamente (até 50% ou, em casos raros, várias vezes) dos custos estimados.
- As estimativas de custo de criação e armazenamento são baseadas na amostragem de um subconjunto das linhas da tabela 
- As estimativas de custo de manutenção são baseadas em atividades recentes de criação, exclusão e atualização na tabela 
Sintaxe¶
SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('<table_name>' [ , '<search_method_with_target>' ])
Argumentos¶
Obrigatório:
- table_name
- Tabela para a qual você deseja estimar os custos de otimização de pesquisa. - Se o nome da tabela não for totalmente qualificado (na forma de - db_name.schema_name.table_nameou- schema_name.table_name), a função procura a tabela no esquema atual para a sessão.- O nome completo deve ser delimitado por aspas simples. 
Opcional:
- search_method_with_target
- Especifica um método de pesquisa e um alvo para uma configuração de coluna semelhante ao que pode ser especificado na cláusula ON do comando ALTER TABLE … ADD SEARCH OPTIMIZATION. - Todo esse argumento deve ser colocado entre aspas simples. Nessa cadeia de caracteres, use aspas duplas ao redor dos nomes das colunas onde for necessário. 
Saída¶
A função retorna um objeto JSON com as propriedades descritas abaixo:
| Propriedade | Descrição | 
|---|---|
| 
 | Nome da tabela. | 
| 
 | 
 | 
| 
 | Matriz de objetos que descrevem os custos previstos da adição de otimização de pesquisa à tabela ou suas colunas. | 
Cada objeto da matriz costPositions representa um tipo diferente de estimativa de custos:
...
"costPositions" : [
  {
    "name" : "BuildCosts",
    ...
  }, {
    "name" : "StorageCosts",
    ...
  }, {
    "name" : "Benefit",
    ...
  }, {
    "name" : "MaintenanceCosts",
    ...
  }
]
...
A propriedade name identifica o tipo de custo representado pelo objeto. O name pode ser um dos seguintes:
| 
 | Descrição | 
|---|---|
| 
 | Este objeto descreve os custos previstos para a criação do caminho de acesso de pesquisa para a tabela. Se a otimização de pesquisa já tiver sido adicionada à tabela ou a todas as colunas especificadas, este objeto não conterá informações sobre custos. | 
| 
 | Este objeto descreve a quantidade prevista de espaço de armazenamento (em TB) necessário para o caminho de acesso de pesquisa para a tabela. | 
| 
 | Este objeto aparece somente quando a tabela tem a otimização de pesquisa ativada. No momento, ele não contém informações. | 
| 
 | Este objeto descreve os custos previstos para a manutenção do caminho de acesso de pesquisa para a tabela quando as linhas são inseridas, excluídas ou modificadas. Se a tabela tiver sido criada recentemente, nenhuma informação de custo será relatada. | 
Cada objeto da matriz costPositions pode ter as seguintes propriedades:
| Propriedade | Descrição | 
|---|---|
| 
 | Nome que identifica o tipo de informação de custo representado por este objeto. | 
| 
 | Objeto que descreve os custos previstos em termos das seguintes propriedades: | 
| value | Montante do custo previsto. | 
| unit | Unidade de medida do custo (por exemplo, “Créditos” para custos de computação, “TB” para custos de armazenamento etc.). | 
| perTimeUnit | Para os custos de manutenção, a unidade de tempo que o custo estimado cobre (por exemplo,  | 
| 
 | Método usado para estimar os custos, caso haja vários métodos disponíveis. | 
| 
 | Informações adicionais sobre o custo estimado. | 
Notas de uso¶
- A propriedade - searchOptimizationEnabledé- truequando a tabela ou qualquer coluna nela contida tem a otimização de pesquisa ativada.
- Para o custo de criação, esta função retorna uma aproximação baseada na criação de caminhos de acesso de pesquisa para uma amostra dos dados na tabela especificada. 
- Para o custo de manutenção, esta função baseia as estimativas nas mudanças recentes feitas na tabela (as mudanças de bytes ao longo do tempo). 
- Para chamar a função, você deve ter um warehouse em uso. Se nenhum warehouse estiver em uso no momento, a função informa o seguinte erro: - No active warehouse selected in the current session. Select an active warehouse with the 'use warehouse' command. - O tamanho do warehouse não afeta o desempenho desta função, por isso você pode usar um warehouse X-Small. 
- Como a função usa um warehouse, você é cobrado pelo uso do warehouse dessa função. 
- A função pode demorar entre 20 segundos até 10 minutos para ser concluída. Usar um warehouse maior não resultará em uma execução mais rápida. 
Exemplos¶
O exemplo a seguir mostra os custos estimados para adicionar a otimização de pesquisa a uma tabela:
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_without_search_opt') AS estimate_for_table_without_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_TABLE_WITHOUT_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITHOUT_SEARCH_OPT", | | "searchOptimizationEnabled" : false, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "costs" : { | | "value" : 11.279, | | "unit" : "Credits" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.070493, | | "unit" : "TB" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 30.296, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "Estimated", | | "comment" : "Estimated from historic change rate over last ~11 days." | | } ] | | } | +---------------------------------------------------------------------------+
O exemplo a seguir mostra a saída desta função para uma tabela que já tem otimização de pesquisa ativada. Você pode ver que nenhuma informação de custo de criação está disponível nesse caso. Além disso, a propriedade Benefit está incluída (mas não contém nenhuma informação).
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_with_search_opt') AS estimate_for_table_with_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_TABLE_WITH_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITH_SEARCH_OPT", | | "searchOptimizationEnabled" : true, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "computationMethod" : "NotAvailable", | | "comment" : "Search optimization is already enabled." | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.052048, | | "unit" : "TB" | | }, | | "computationMethod" : "Measured" | | }, { | | "name" : "Benefit", | | "computationMethod" : "NotAvailable", | | "comment" : "Currently not supported." | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 30.248, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "EstimatedUpperBound", | | "comment" : "Estimated from historic change rate over last ~11 days." | | } ] | | } | +---------------------------------------------------------------------------+
O exemplo a seguir mostra a saída dessa função para estimar a otimização de pesquisa em três colunas específicas de uma tabela usando o método de pesquisa EQUALITY (ou seja, a estimativa é para ativar a otimização da pesquisa somente para comparações de igualdade nessas colunas). Nem a tabela nem nenhuma de suas colunas já têm qualquer tipo de otimização de pesquisa ativada.
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_without_search_opt', 'EQUALITY(C1, C2, C3)') AS estimate_for_columns_without_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_COLUMNS_WITHOUT_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITHOUT_SEARCH_OPT", | | "searchOptimizationEnabled" : false, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "costs" : { | | "value" : 10.527, | | "unit" : "Credits" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.040323, | | "unit" : "TB" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 22.821, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "Estimated", | | "comment" : "Estimated from historic change rate over last ~7 days." | | } ] | | } | +---------------------------------------------------------------------------+
Se uma consulta semelhante for executada em uma tabela em que a otimização de pesquisa já esteja ativada para qualquer uma das colunas especificadas, o resultado incluirá uma estimativa de custo de criação que abranja a adição de otimização de pesquisa às colunas especificadas em que ela ainda não esteja ativada. Isso é diferente do exemplo anterior, em que estávamos estimando a otimização de pesquisa em uma tabela inteira em que a otimização de busca já estava ativada, o que resultou em nenhuma estimativa de custo de criação, pois não havia trabalho de criação a ser feito.
A estimativa de armazenamento aqui inclui apenas o tamanho real do caminho de acesso à pesquisa para as colunas em que a otimização de pesquisa já está ativada.
A estimativa de manutenção abrange todas as colunas especificadas, independentemente de elas já terem a otimização de pesquisa ativada.
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_with_search_opt', 'EQUALITY(C1, C2, C3)') AS estimate_for_columns_with_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_COLUMNS_WITH_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITH_SEARCH_OPT", | | "searchOptimizationEnabled" : true, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "costs" : { | | "value" : 8.331, | | "unit" : "Credits" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.040323, | | "unit" : "TB" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "Benefit", | | "computationMethod" : "NotAvailable", | | "comment" : "Currently not supported." | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 22.821, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "Estimated", | | "comment" : "Estimated from historic change rate over last ~7 days." | | } ] | | } | +---------------------------------------------------------------------------+