/ / Prečo indexované zobrazenia nemajú agregáciu MAX ()? - sql-server, zobrazenie, indexovanie, agregácia

Prečo indexované zobrazenia nemajú súčet MAX ()? - sql-server, zobrazenie, indexovanie, agregát

Snažil som sa z niekoľkých indexových zobrazení a som ohromený, ale ja som takmer vždy potrebovať max alebo min rovnako a nemôže pochopiť, prečo to nie je "t pracovať s týmito, môže niekto vysvetliť prečo?"

Viem, že nie sú povolené, ja len "t pochopiť, prečo !!! Počet atď je povolené, prečo nie MIN / MAX, ja" m hľadá vysvetlenie ...

odpovede:

72 pre odpoveď č. 1

Tieto agregáty nie sú povolené, pretože nemôžu byť prepočítané iba na základe zmenených hodnôt.

Niektoré agregáty, podobne COUNT_BIG() alebo SUM(), môže byť prepočítaný len pri pohľade na dáta, ktoré sa zmenili. Tieto sú povolené v rámci indexovaného zobrazenia, pretože ak sa zmení podkladová hodnota, vplyv tejto zmeny možno priamo vypočítať.

Iné agregáty MIN() a MAX(), nedá sa prepočítavať len pri pohľade na údaje, ktoré sa menia. Ak zmažete hodnotu, ktorá je v súčasnosti max alebo min, potom sa musí vyhľadať a nájsť nová max alebo min celý stôl.

Rovnaký princíp platí aj pre iné agregáty AVG() alebo štandardné variačné agregáty. SQL ich nemôže prepočítať len z hodnôt, ktoré sa zmenili, ale musí znovu naskenovať celú tabuľku, aby získala novú hodnotu.


4 pre odpoveď č. 2

Okrem dôvodov, ktoré uviedol Remus, existujemenej praktická potreba podpory MIN a MAX. Na rozdiel od COUNT () alebo SUM (), MAX a MIN sa rýchlo vypočítajú - všetko sa nastavuje len po jednom vyhľadávaní; nemusíte čítať veľa údajov.


1 pre odpoveď č. 3

Súhrnné funkcie ako MIN / MAX aren "t podporované v indexovaných zobrazeniach. Musíte urobiť MIN / MAX v dotaze obklopujúcom zobrazenie.

V indexovanom zobrazení je povolená úplná definícia toho, čo je a nie je povolené tu (SQL 2005).
Citácia:

AVG, MAX, MIN, STDEV, STDEVP, VAR, alebo VARPsúhrnné funkcie. ak AVG (výraz) je špecifikovaný v dotazy odkazujúce na indexované zobrazenie, optimalizátor môže často počítať Ak je zobrazenie vybraté, zobrazia sa potrebné výsledky obsahuje SUM (výraz) a COUNT_BIG (expresie). Napríklad, a indexovaný pohľad Zoznam SELECT nemôže obsahujú výraz AVG (stĺpec 1). Ak zoznam SELECT obsahuje výrazy SUM (stĺpec 1) a COUNT_BIG (column1), SQL Server môže vypočítajte priemer dotazu odkazuje na zobrazenie a špecifikuje AVG (column1).