Mam obecnie witrynę z tabelą, która ma kolumny pływające długie/długie i indeks nad tymi dwiema kolumnami oraz inną, którą muszę pobrać.Czy mogę utworzyć indeks "Covering, Spatial" w SQL Server 2008?
Ciągle wyszukuję tę tabelę, aby uzyskać wiersze mieszczące się w promieniu od pewnego punktu (w rzeczywistości otrzymuję kwadrat dla prędkości), ale potrzebuję tylko pól, które są już indeksowane, więc ten indeks jest w rzeczywistości pokryciem, a plan wykonanie ma tylko 2 etapy:
Index Seek (cost: 100%) and SELECT (cost: 0%)
teraz próbuję skorzystać z funkcji przestrzennych SQL 2008. i utworzeniu kolumny geografia, wypełnić go, utworzony indeks przestrzenny, dzieła.
Wszystko działa dobrze, z tym że plan wykonania ma milion kroków, a 74% czasu spędza na indeksie indeksów klastrowych, gdzie łączy wiersze znalezione w indeksie przestrzennym z rzeczywistym tabelą, aby uzyskać resztę danych ...
(Indeks przestrzenny Szukajcie trwa 1% kosztów planu wykonania)
Więc, jak widać, to przy użyciu indeks przestrzenny i znalezienie odpowiednio zapisy muszę dużo szybciej niż wcześniej z moim "regularnym" indeksem ponad Lat/Long, ale dołączenie do głównego stołu to KILLING me, zapytanie przestrzenne zajmuje 7 razy więcej czasu niż moje stare.
Czy istnieje sposób na dodanie więcej kolumn do indeksu przestrzennego, tak aby obejmował i może robić rzeczy w jednym kroku, tak jak robił to wcześniej?
Czy są inne rzeczy, które mogę zrobić, aby poprawić tę sytuację?
UPDATE: Znalazłem, że „regularne” indeksy „obejmują” innych kolumn za pomocą słowa kluczowego include (który ja nie wiedziałem o, kiedyś po prostu zawierać kolumny w samej index)
według do dokumentacji here, ta klauzula nie jest opcją dla Spatial Indexes ... Jakieś pomysły?
Dzięki!
Daniel