Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Quão bom é o tipo de dados de geografia no sql server 2008?


Se você está lidando apenas com um par Lat/Lng padrão como você descreve, e tudo o que você faz é uma simples pesquisa, então provavelmente você não ganhará muito em termos de aumento de velocidade usando o Tipo de Geometria.

No entanto, se você quiser ser mais aventureiro como afirma, então trocar para usar os tipos de geometria abrirá um mundo inteiro de novas possibilidades para você, e não apenas para pesquisas.

Por exemplo (com base em um projeto em que estou trabalhando) você pode (se forem dados do Reino Unido) baixar as definições de polígono para todas as cidades / vilas / cidades de uma determinada área e fazer referências cruzadas para pesquisar em uma determinada cidade ou se você tivesse um roteiro, poderia descobrir quais clientes moravam perto das principais rotas de entrega, rodovias, estradas principais e todo tipo de coisa.

Você também pode fazer alguns relatórios muito sofisticados, imaginar um mapa de cidades, onde cada contorno foi plotado em um mapa e, em seguida, sombreado com uma cor para mostrar a densidade de clientes em uma área, alguma geometria simples SQL retornará facilmente uma contagem direta do banco de dados, para representar graficamente esse tipo de informação.

Depois, há o rastreamento, não sei com quais dados você lida, ou por que você tem clientes, mas se você entrega alguma coisa, alimentando as coordenadas de uma van de entrega, informa o quão perto está de um determinado cliente.

Quanto à pergunta STDistance é rápido? bem, isso é difícil de dizer realmente, acho que uma pergunta melhor é "É rápido em comparação com...", é difícil dizer sim ou não, a menos que você tenha algo para comparar.

Índices espaciais são uma das principais razões para mover seus dados para um banco de dados geograficamente ciente, eles são otimizados para produzir os melhores resultados para uma determinada tarefa, mas, como qualquer banco de dados, se você criar índices ruins, terá um desempenho ruim.

Em geral, você definitivamente deve ver um aumento de velocidade de algum tipo, porque a matemática na classificação e na indexação está mais ciente da finalidade dos dados, em vez de ser bastante linear em operação, como um índice normal.

Tenha em mente também que quanto mais robusta for a máquina do servidor SQL, melhores resultados você obterá.

Um último ponto a ser mencionado é o gerenciamento dos dados, se você estiver usando um banco de dados com reconhecimento de GIS, isso abre o caminho para você usar um pacote GIS como ArcMap ou MapInfo para gerenciar, corrigir e visualizar seus dados, o que significa que as correções são muito fáceis fazer apontando, clicando e arrastando.

Meu conselho seria criar uma tabela lado a lado para a sua existente, que seja formatada para operações espaciais, depois escrever alguns procs armazenados e fazer alguns testes de tempo, ver qual sai melhor. Se você tem um aumento significativo apenas nas operações básicas que está fazendo, então isso é justificação por si só, se é quase igual, então sua decisão realmente depende de qual nova funcionalidade você realmente deseja alcançar.