Estos agregados no están permitidos porque no se pueden volver a calcular únicamente en función de los valores modificados.
Algunos agregados, como COUNT_BIG()
o SUM()
, se pueden recalcular con solo mirar los datos que han cambiado. Estos están permitidos dentro de una vista indexada porque, si un valor subyacente cambia, el impacto de ese cambio puede calcularse directamente.
Otros agregados, como MIN()
y MAX()
, no se pueden volver a calcular con solo mirar los datos que se están modificando. Si elimina el valor que es actualmente el máximo o mínimo, entonces el nuevo máximo o mínimo debe buscarse y encontrarse en la tabla completa .
El mismo principio se aplica a otros agregados, como AVG()
o los agregados de variación estándar. SQL no puede recalcularlos solo a partir de los valores modificados, sino que necesita volver a analizar toda la tabla para obtener el nuevo valor.
¡Hah, lo has clavado! –
Se podrían admitir si restringía la tabla para permitir solo operaciones de 'inserción', no 'actualizar' o' eliminar'. (Si quisiera hacer uno de esos, tendría que soltar la vista indexada y volver a crearla después). Muchas tablas son solo para uso práctico, y se beneficiarían de una forma de acelerar 'max' y 'min' consultas. –