Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak mogę przyspieszyć to zapytanie Sql Server Spatial?

Wygląda na to, że masz optymalny plan uruchomienia zapytania. Trudno będzie to poprawić. Oto kilka obserwacji.

Kwerenda wykonuje skanowanie indeksu klastrowego w indeksie PK_States. Nie używa indeksu przestrzennego. Dzieje się tak, ponieważ optymalizator zapytań uważa, że ​​lepiej będzie użyć indeksu klastrowego zamiast jakiegokolwiek innego indeksu. Czemu? Prawdopodobnie dlatego, że w tabeli Stany jest kilka wierszy (50 plus może kilka innych dla Waszyngtonu, Puerto Rico itp.).

SQL Server przechowuje i pobiera dane na stronach 8KB. Rozmiar wiersza (zobacz Szacowanie rozmiaru wiersza) dla operacji filtrowania to 8052 bajty, co oznacza, że ​​na stronę przypada jeden wiersz i około 50 stron w całej tabeli. Plan zapytania szacuje, że przetworzy około 18 z tych wierszy (zobacz Szacowana liczba wierszy). Nie jest to znacząca liczba wierszy do przetworzenia. Moje wyjaśnienie nie dotyczy dodatkowych stron, które są częścią tabeli, ale chodzi o to, że liczba ta wynosi około 50, a nie 50 000 stron.

Wróćmy więc do tego, dlaczego używa indeksu PK_States zamiast indeksu SPATIAL_States_Boundry. Indeks klastrowy z definicji zawiera rzeczywiste dane tabeli. Indeks nieklastrowy wskazuje stronę, na której istnieją dane, więc jest więcej stron do pobrania. Tak więc indeks nieklastrowy staje się użyteczny tylko wtedy, gdy istnieją większe ilości danych.

Mogą istnieć rzeczy, które możesz zrobić, aby zmniejszyć liczbę procesów stron (np. użyć indeksu pokrywającego), ale Twoje bieżące zapytanie jest już dobrze zoptymalizowane i nie zobaczysz znacznej poprawy wydajności.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można wstawić rekordu z procedury składowanej wywołanej z usługi sieciowej

  2. Jak zapisać wideo w bazie danych za pomocą c#?

  3. Łączenie wierszy z FOR XML, ale z wieloma kolumnami?

  4. łańcuchowy odpowiednik sumy do konkatenacji

  5. Czy są jakieś darmowe narzędzia do generowania skryptów 'INSERT INTO' w MS SQL Server?