sql >> Databasteknik >  >> RDS >> Sqlserver

Varför kan inte indexerade vyer ha ett MAX()-aggregat?

Dessa aggregat är inte tillåtna eftersom de inte kan beräknas om enbart baserat på de ändrade värdena.

Vissa aggregat, som COUNT_BIG() eller SUM() , kan beräknas om bara genom att titta på data som ändrats. Dessa är tillåtna i en indexerad vy eftersom, om ett underliggande värde ändras, kan effekten av den förändringen beräknas direkt.

Andra aggregat, som MIN() och MAX() , kan inte räknas om bara genom att titta på data som ändras. Om du tar bort värdet som för närvarande är max eller min, måste det nya max eller min sökas efter och hittas i hela tabell.

Samma princip gäller för andra aggregat, som AVG() eller standardvariationsaggregaten. SQL kan inte räkna om dem bara från de ändrade värdena, utan måste skanna hela tabellen igen för att få det nya värdet.



  1. PHP ändrar gammal mysql_query till PDO

  2. Skapar ENUM-variabeltyp i MySQL

  3. SQL Server:Skillnaden mellan PARTITION BY och GROUP BY

  4. Begränsa raderna som returneras i en SQL Server-fråga genom att använda TOP-satsen