sql >> Database >  >> RDS >> Sqlserver

Waarom kunnen geïndexeerde weergaven geen MAX()-aggregatie hebben?

Deze aggregaten zijn niet toegestaan ​​omdat ze niet alleen op basis van de gewijzigde waarden kunnen worden herberekend.

Sommige aggregaten, zoals COUNT_BIG() of SUM() , kan opnieuw worden berekend door alleen naar de gegevens te kijken die zijn gewijzigd. Deze zijn toegestaan ​​binnen een geïndexeerde weergave omdat, als een onderliggende waarde verandert, de impact van die verandering direct kan worden berekend.

Andere aggregaten, zoals MIN() en MAX() , kan niet opnieuw worden berekend door alleen naar de gegevens te kijken die worden gewijzigd. Als u de waarde verwijdert die momenteel de max of min is, moet de nieuwe max of min worden gezocht en gevonden in de gehele tafel.

Hetzelfde principe is van toepassing op andere aggregaten, zoals AVG() of de standaardvariatie-aggregaten. SQL kan ze niet alleen herberekenen op basis van de gewijzigde waarden, maar moet de hele tabel opnieuw scannen om de nieuwe waarde te krijgen.



  1. Hoe rijnummers weergeven in PostgreSQL-query?

  2. Uitdagingsoplossingen voor generatorreeksen - deel 2

  3. Hoe phantom reads produceren?

  4. Wat is een eenvoudig opdrachtregelprogramma of script om een ​​back-up te maken van SQL-serverdatabases?