Como trabalhar com tabelas otimizadas para pesquisa

A otimização de pesquisa geralmente é transparente para os usuários. As consultas funcionam da mesma forma; algumas são apenas mais rápidas. No entanto, é importante estar ciente dos possíveis efeitos de outras operações de tabela no serviço de otimização de pesquisa, ou vice-versa.

Modificação da tabela

Um caminho de acesso de pesquisa torna-se inválido se o valor padrão de uma coluna for alterado.

Para usar a otimização de pesquisa novamente após um caminho de acesso de pesquisa ter se tornado inválido, você deve descartar a propriedade SEARCH OPTIMIZATION e adicionar a propriedade SEARCH OPTIMIZATION novamente à tabela.

Um caminho de acesso de pesquisa permanece válido se você adicionar, descartar ou renomear uma coluna:

  • Se você tiver habilitado a otimização de pesquisa para toda uma tabela sem definir as colunas específicas, quando você adiciona uma coluna a uma tabela, a nova coluna será adicionada automaticamente ao caminho de acesso de pesquisa. No entanto, se você tiver usado a cláusula ON ao habilitar a otimização de pesquisa para uma coluna, novas colunas não serão adicionadas automaticamente.

  • Quando você descarta uma coluna de uma tabela, a coluna descartada é removida automaticamente do caminho de acesso de pesquisa.

  • Renomear uma coluna não requer nenhuma mudança no caminho de acesso de pesquisa.

Se você descartar uma tabela, a propriedade SEARCH OPTIMIZATION e os caminhos de acesso de pesquisa também são descartados. Note que:

  • Descartar a tabela restabelece imediatamente a otimização de pesquisa como uma propriedade da tabela.

  • Quando você descarta uma tabela, o caminho de acesso de pesquisa tem o mesmo período de retenção de dados que a tabela.

Se você descartar a propriedade SEARCH OPTIMIZATION da tabela, o caminho de acesso de pesquisa será removido. Quando você adiciona a propriedade SEARCH OPTIMIZATION novamente à tabela, o serviço de manutenção precisa recriar o caminho de acesso da pesquisa. (Não há maneira de descartar a propriedade).

Clonagem de tabela, esquema ou banco de dados

Se você clonar uma tabela, esquema ou banco de dados, a propriedade SEARCH OPTIMIZATION e os caminhos de acesso de pesquisa de cada tabela também são clonados. (A clonagem de uma tabela, esquema ou banco de dados cria um clone zero-copy de cada tabela e seus correspondentes caminhos de acesso de pesquisa).

Note que se você usar CREATE TABLE … LIKE para criar uma nova tabela vazia com as mesmas colunas da tabela original, a propriedade SEARCH OPTIMIZATION não é copiada para a nova tabela.

Como trabalhar com tabelas em um banco de dados secundário (suporte para replicação de banco de dados)

Se uma tabela no banco de dados primário tiver a propriedade SEARCH OPTIMIZATION ativada, a propriedade é replicada para a tabela correspondente no banco de dados secundário.

Os caminhos de acesso de pesquisa no banco de dados secundário não são replicados, mas sim reconstruídos automaticamente. Observe que este processo incorre nos mesmos tipos de custos descritos em Estimativa e gerenciamento de custos de otimização de pesquisa.

Compartilhamento de tabelas

Os provedores de dados podem usar Secure Data Sharing para compartilhar tabelas que tenham a otimização de pesquisa ativada.

Ao consultar tabelas compartilhadas, os consumidores de dados podem se beneficiar de qualquer melhoria de desempenho feita pelo serviço de otimização de pesquisa.

Políticas de mascaramento e políticas de acesso a linhas

O serviço de otimização de pesquisa é totalmente compatível com tabelas que usam políticas de mascaramento e políticas de acesso a linhas.

No entanto, quando a otimização de pesquisa é habilitada, um usuário que é impedido de ver um valor devido a uma política de mascaramento ou política de acesso a linhas pode ser capaz de deduzir com maior certeza se esse valor existe. Com ou sem otimização de pesquisa, as diferenças na latência da consulta podem fornecer dicas sobre a presença ou ausência de dados restritos por uma política, o que pode constituir um problema de segurança dependendo da sensibilidade dos dados. Esse efeito pode ser ampliado pela otimização de pesquisa, pois pode tornar uma consulta que não retorna resultados ainda mais rápida.

Por exemplo, suponha que uma política de acesso a linhas impeça um usuário de acessar linhas com country = 'US', mas os dados não incluem linhas com country = 'US'. Agora suponha que a otimização de pesquisa esteja habilitada para a coluna country e que o usuário execute uma consulta com WHERE country = 'US'. A consulta retorna resultados vazios como esperado, mas a consulta pode ser executada mais rapidamente com otimização de pesquisa do que sem ela. Neste caso, o usuário pode inferir qmais facilmente que os dados não contêm qualquer linha em que country = 'US' com base no tempo necessário para executar a consulta.