Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо индексираните изгледи не могат да имат агрегат MAX()?

Тези агрегати не са разрешени, защото не могат да бъдат преизчислени само въз основа на променените стойности.

Някои агрегати, като COUNT_BIG() или SUM() , може да бъде преизчислено само чрез разглеждане на променените данни. Те са разрешени в рамките на индексиран изглед, тъй като, ако основната стойност се промени, въздействието на тази промяна може да бъде директно изчислено.

Други агрегати, като MIN() и MAX() , не може да бъде преизчислен само чрез разглеждане на данните, които се променят. Ако изтриете стойността, която в момента е максималната или мин., тогава новата макс. или мин. трябва да се потърси и намери в цялото маса.

Същият принцип важи и за други агрегати, като AVG() или стандартните вариационни агрегати. SQL не може да ги преизчисли само от променените стойности, но трябва да сканира повторно цялата таблица, за да получи новата стойност.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е функция с таблично значение в SQL Server?

  2. Грешки в SQL Server при импортиране на CSV файл, въпреки че varchar(MAX) се използва за всяка колона

  3. Събития на изчакване на SQL сървър -2

  4. Върнете редовете в точния ред, в който са били вмъкнати

  5. Мога ли да получа името на всички таблици от базата данни на SQL Server в C# приложение?