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

Dlaczego zindeksowane widoki nie mogą mieć agregacji MAX()?

Te agregaty nie są dozwolone, ponieważ nie można ich przeliczyć wyłącznie na podstawie zmienionych wartości.

Niektóre agregaty, takie jak COUNT_BIG() lub SUM() , można ponownie obliczyć, po prostu patrząc na dane, które uległy zmianie. Są one dozwolone w indeksowanym widoku, ponieważ w przypadku zmiany wartości bazowej wpływ tej zmiany można obliczyć bezpośrednio.

Inne agregaty, takie jak MIN() i MAX() , nie można ponownie obliczyć tylko patrząc na dane, które są zmieniane. Jeśli usuniesz wartość, która jest obecnie wartością maksymalną lub minimalną, nowa wartość maksymalna lub minimalna musi zostać wyszukana i znaleziona w całości stół.

Ta sama zasada dotyczy innych agregatów, takich jak AVG() lub standardowe agregaty zmienności. SQL nie może ich ponownie obliczyć tylko ze zmienionych wartości, ale musi ponownie przeskanować całą tabelę, aby uzyskać nową wartość.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z indeksów w tabelach SQL Server zoptymalizowanych pod kątem pamięci

  2. Przechowuj wiele wartości bitowych w jednej kolumnie tabeli

  3. Eksportuj dane z SQL Server do Excela i pliku tekstowego za pomocą pakietu SSIS

  4. Znajdź skojarzenia między kontami pocztowymi bazy danych a zasadami bazy danych w SQL Server (T-SQL)

  5. Wskazówki dotyczące przenoszenia bazy danych SQL Server z jednego serwera na drugi — samouczek SQL autorstwa Rajana Singha