sql >> Databáze >  >> RDS >> Sqlserver

Proč nemohou indexovaná zobrazení mít agregaci MAX()?

Tyto agregáty nejsou povoleny, protože je nelze přepočítat pouze na základě změněných hodnot.

Některé agregáty, například COUNT_BIG() nebo SUM() , lze přepočítat pouhým pohledem na data, která se změnila. Ty jsou povoleny v rámci indexovaného zobrazení, protože pokud se změní podkladová hodnota, lze dopad této změny přímo vypočítat.

Jiné agregáty, jako je MIN() a MAX() , nelze přepočítat pouhým pohledem na data, která se mění. Pokud smažete hodnotu, která je aktuálně maximální nebo minimální, je třeba vyhledat a najít nové maximum nebo minimum v celém stůl.

Stejný princip platí pro další agregáty, jako je AVG() nebo standardní variační agregáty. SQL je nemůže přepočítat pouze ze změněných hodnot, ale potřebuje znovu naskenovat celou tabulku, aby získal novou hodnotu.



  1. Vraťte číslo oddílu pro každý řádek při dotazu na tabulku oddílů na serveru SQL (T-SQL)

  2. Spuštění skriptu .sql pomocí MySQL s JDBC

  3. Jak používat sql*plus v příkazovém skriptu Windows k řízení toku?

  4. Jak používat globální dočasnou tabulku v postupu Oracle?