Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Quanto è buono il tipo di dati geografico in sql server 2008?

Se stai gestendo solo una coppia Lat/Lng standard come descrivi e tutto ciò che fai è una semplice ricerca, probabilmente non guadagnerai molto in termini di aumento di velocità usando il tipo di geometria.

Tuttavia, se vuoi diventare più avventuroso come affermi, il passaggio all'utilizzo dei tipi di geometria ti aprirà un intero mondo di nuove possibilità, e non solo per le ricerche.

Ad esempio (basato su un progetto su cui sto lavorando) potresti (se si tratta di dati del Regno Unito) scaricare le definizioni dei poligoni per tutte le città / paesi / città per una determinata area, quindi fare riferimenti incrociati per cercare in una città particolare, oppure se avessi una mappa stradale, potresti trovare quali clienti abitavano vicino alle principali rotte di consegna, autostrade, strade principali di ogni genere.

Potresti anche fare dei rapporti molto fantasiosi, immaginare una mappa delle città, in cui ogni contorno è stato tracciato su una mappa, quindi ombreggiato con un colore per mostrare la densità dei clienti in un'area, alcune semplici geometrie SQL ti restituiranno facilmente un conteggio diretto dal database, per rappresentare graficamente questo tipo di informazioni.

Poi c'è il monitoraggio, non so quali dati gestisci o perché hai clienti, ma se stai consegnando qualcosa, inserendo le coordinate di un furgone, ti dice quanto sia vicino a un determinato cliente.

Per quanto riguarda la domanda STDistance è veloce? beh, è ​​difficile da dire davvero, penso che una domanda migliore sia "È veloce rispetto a.....", è difficile dire sì o no, a meno che tu non abbia qualcosa con cui confrontarlo.

Gli indici spaziali sono uno dei motivi principali per spostare i dati in un database geograficamente consapevole, sono ottimizzati per produrre i migliori risultati per una determinata attività, ma come qualsiasi database, se crei indici errati, otterrai prestazioni scadenti.

In generale dovresti assolutamente vedere un aumento di velocità di qualche tipo, perché i calcoli nell'ordinamento e nell'indicizzazione sono più consapevoli dello scopo dei dati invece di essere abbastanza lineari nel funzionamento come un normale indice.

Tieni inoltre presente che più potente è la macchina del server SQL, migliori saranno i risultati che otterrai.

Un ultimo punto da menzionare è la gestione dei dati, se si utilizza un database compatibile con GIS, ciò apre la strada all'utilizzo di un pacchetto GIS come ArcMap o MapInfo per gestire, correggere e visualizzare i dati, il che significa che le correzioni sono molto semplici da fare puntando, cliccando e trascinando.

Il mio consiglio sarebbe quello di creare una tabella affiancata a quella esistente, formattata per le operazioni spaziali, quindi scrivere alcuni proc memorizzati ed eseguire alcuni test di temporizzazione, vedere quale esce meglio. Se hai un aumento significativo solo nelle operazioni di base che stai facendo, allora questa è solo una giustificazione, se è all'incirca uguale, la tua decisione dipende davvero dalle nuove funzionalità che vuoi effettivamente ottenere.