Tworzenie indeksów przestrzennych w PostgreSQL\PostGIS

Jak przyspieszyć zapytania przestrzenne w PostGIS? Nic prostszego – trzeba utworzyć indeks przestrzenny warstw. Pokażemy Wam jak to zrobić.

Do przykładu wykorzystamy dwie warstwy powiaty i drogi w mazowieckim. Obie warstwy możecie pobrać za darmo np. z projektu Open Street Map.

Sprawdzamy np. w pgAdminie czy nasze warstwy mają jakieś indeksy.

postgis_index_2

Przed pokazaniem Wam jak stworzyć zapytanie dodające indeks przestrzenny zobaczmy ile czasu zajmie nam wykonanie zapytania zwracającego liczbę dróg leżących w trzech powiatach województwa mazowieckiego. Wykonajmy takie zapytanie:

postgis_index_3

Czas wykonania zapytania wyniósł 1:26 minuty.

Wygenerujmy teraz indeksy przestrzenne dla dwóch używanych przez nas warstw używając zapytania SQL:

I powtórzmy zapytanie zliczające odcinki dróg w poszczególnych powiatach. Tym razem zapytanie zwróciło wynik w 1.9 sekundy.

Wygenerowanie dwóch indeksów przestrzennych trwało tylko 3.2 sekundy, a zapytanie wykonane za ich pomocą tylko 1.9 sekundy. Czas tych dwóch działań jest znacząco niższy niż czas potrzebny na wykonanie zapytania bez indeksów. Widać zatem, że zastosowanie indeksów znacząco przyspiesza naszą pracę. W PostgreSQL jest jeszcze wiele innych typów indeksów, ale o nich napiszemy innym razem.

Dla tych którzy chcą wiedzieć jak działa indeks przestrzenny odsyłamy do tej strony.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Translate using Google Translate»
Social media & sharing icons powered by UltimatelySocial

Podoba Ci się nasza strona? Odwiedź nasz profil