Aceleração de consultas geoespaciais com otimização de pesquisa¶
O serviço de otimização de pesquisa pode melhorar o desempenho de consultas com predicados que utilizam funções geoespaciais com objetos GEOGRAPHY.
As seções a seguir fornecem mais informações sobre o suporte de otimização de pesquisa para consultas geoespaciais:
Nota
Objetos GEOMETRY ainda não são compatíveis.
Como possibilitar a otimização de pesquisa para consultas geoespaciais¶
Para melhorar o desempenho das consultas geoespaciais em uma tabela, use a cláusula ON GEO no comando ALTER TABLE … ADD SEARCH OPTIMIZATION para colunas específicas. A ativação da otimização de pesquisa no nível da tabela não a habilita para colunas com tipos de dados geoespaciais.
Por exemplo:
Para obter mais informações, consulte Habilitação e desabilitação da otimização de pesquisa.
Predicados compatíveis com funções geoespaciais¶
Para consultas com predicados que utilizam as seguintes funções:
O serviço de otimização de pesquisa pode melhorar o desempenho se:
Uma expressão de entrada é uma coluna GEOGRAPHY em uma tabela, e
A outra expressão de entrada é uma constante de GEOGRAPHY (criada por meio de uma função de conversão ou construção).
Para ST_DWITHIN, o argumento da distância é uma constante REAL não negativa.
Observe que esse recurso tem as mesmas limitações que se aplicam ao serviço de otimização de pesquisa.
Outras considerações de desempenho¶
Como o serviço de otimização de pesquisa é projetado para predicados que são altamente seletivos e porque os predicados filtram por proximidade entre objetos geoespaciais, o clustering de objetos geoespaciais por proximidade na tabela pode resultar em melhor desempenho. Você pode agrupar seus dados, especificando a ordem de classificação ao carregar os dados ou usando o Clustering automático, dependendo se a tabela base muda com frequência:
- Carregamento de dados pré-classificados
Se os dados em sua tabela base não mudarem com frequência, você poderá especificar a ordem de classificação ao carregar os dados. Você pode então ativar a otimização de pesquisa na coluna GEOGRAPHY. Por exemplo:
Após cada grande alteração feita em seus dados base, você poderá reordenar os dados manualmente.
Clustering automático¶
Se houver atualizações frequentes em sua tabela base, você poderá usar o comando ALTER TABLE … CLUSTER BY … para ativar o Clustering automático para que a tabela seja automaticamente clusterizada de novo à medida que muda.
O exemplo a seguir adiciona uma nova coluna geom_geohash do tipo VARCHAR e armazena o índice geohash ou H3 da coluna GEOGRAPHY geom nessa nova coluna. Em seguida, ele permite o Clustering automático na nova coluna como a chave de cluster. Esta abordagem reterá automaticamente as partes da tabela que mudarem.
Exemplos que utilizam funções geoespaciais¶
As seguintes instruções criam e configuram a tabela usada nos exemplos desta seção. A última instrução usa a cláusula ON no comando ALTER TABLE … ADD SEARCH OPTIMIZATION para adicionar otimização de pesquisa para a coluna g1 GEOGRAPHY.
Exemplos de predicados compatíveis¶
A consulta a seguir é um exemplo de uma consulta compatível com o serviço de otimização de pesquisa. O serviço de otimização de pesquisa pode usar caminhos de acesso de pesquisa para melhorar o desempenho dessa consulta:
A seguir estão exemplos de predicados adicionais que são compatíveis com o serviço de otimização de pesquisa:
Exemplos de constantes de GEOGRAPHY de construção¶
A seguir, exemplos de predicados que utilizam diferentes funções de conversão e construção para a constante de GEOGRAPHY.