Mam aplikację, w której zasadniczo mam ogromną tabelę (100 milionów rekordów) informacji, z każdym wierszem zawierającym wartość lat/długą.Czy funkcje danych przestrzennych programu SQL Server 2008 są przydatne do mapowania zapytań?
Ciągle wyszukuję tę tabelę, aby uzyskać wszystkie rekordy mieszczące się w promieniu wokół pewnego punktu. Na przykład: "wszystkie rekordy w odległości 5 mil od 39,89288, -104,1919434"
W tym celu mam indeks nad kolumnami Lat/Long i otrzymuję "kwadrat ograniczający" punktów, a następnie odrzucam wszystkie punkty, które wypadają poza okręgiem w mojej aplikacji ASP.Net, ponieważ było to szybsze niż wykonywanie obliczeń koła w SQL Server.
UWAGA: To są wszystkie dane dotyczące Stanów Zjednoczonych, więc uważam, że ziemia jest płaska dla moich obliczeń, która jest wystarczająco dokładna dla moich potrzeb.
Główny problem z indeksem Lat/Long polega na tym, że jest to "kwadrat" punktów, a ponieważ próbuję znaleźć "Lat między X i Y" i "Długi między X i Y", nie może tak naprawdę używać tego indeksu super-wydajnie, jak mogłoby to być, gdybym szukał "linii" punktów.
Czytałem o cechach przestrzennych SQL 2008, ale nie znalazłem wystarczająco konkretnych informacji, aby wiedzieć, czy jest to dla mnie przydatne.
Pytanie brzmi: czy SQL 2008 ma jakiś inny rodzaj indeksu, który sprawi, że ten typ zapytania będzie dużo szybszy niż w SQL 2005?
Dobre pytanie! Zrobiłem coś bardzo podobnego do tego, co robisz teraz w SQL2005, więc chciałbym usłyszeć, co ludzie wymyślą –