Các tổng hợp này không được phép vì chúng không thể được tính toán lại chỉ dựa trên các giá trị đã thay đổi.
Một số tổng hợp, như COUNT_BIG()
hoặc SUM()
, có thể được tính toán lại chỉ bằng cách xem dữ liệu đã thay đổi. Chúng được cho phép trong một khung nhìn được lập chỉ mục bởi vì, nếu một giá trị cơ bản thay đổi, tác động của thay đổi đó có thể được tính toán trực tiếp.
Các tổng hợp khác, như MIN()
và MAX()
, không thể được tính toán lại chỉ bằng cách xem dữ liệu đang được thay đổi. Nếu bạn xóa giá trị hiện tại là giá trị cực đại hoặc tối thiểu, thì giá trị tối đa hoặc phút mới phải được tìm kiếm và tìm thấy trong bảng toàn bộ.
Nguyên tắc tương tự áp dụng cho các tập hợp khác, như AVG()
hoặc tập hợp biến thể chuẩn. SQL không thể tính lại chúng chỉ từ các giá trị đã thay đổi, nhưng cần phải quét lại toàn bộ bảng để lấy giá trị mới.
Nguồn
2010-01-25 19:15:04
Hah, bạn đã đóng đinh nó! –
Chúng có thể được hỗ trợ nếu bạn hạn chế bảng chỉ cho phép các thao tác 'chèn', không phải' cập nhật' hoặc 'xóa'. (Nếu bạn muốn thực hiện một trong số đó, bạn phải bỏ chế độ xem được lập chỉ mục và tạo lại nó sau đó). Rất nhiều bảng chỉ được chèn vào trong thực tế, và sẽ được hưởng lợi từ cách tăng tốc 'max' và truy vấn 'min'. –