Đang sử dụng SQL SERVER 2012
Tôi có Auto Update Stats
ON của tôi trong cơ sở dữ liệu của tôi.
Từ liên kết bên dưới tôi đã học được rằng, các thống kê Cập nhật tự động sẽ kích hoạt cho mọi SQRT(1000 * Table rows)
thay đổi trong các hàng của bảng.
https://bloss.msdn.microsoft.com/srgolla/2012/09/04/sql-server-statistic-explained/
Tôi đã tạo một bảng với 1000 bản ghi
SELECT TOP 500 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
name
INTO stst
FROM sys.objects
Tạo số liệu thống kê
CREATE STATISTICS rn
ON stst (rn)
CREATE STATISTICS name
ON stst (name)
Kiểm tra số liệu thống kê đã tạo
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
Theo công thức
select SQRT(1000 * 500) -- 707.106781186548
Vì vậy, nếu tôi thêm / sửa đổi 707.106781186548
các bản ghi trong bảng thống kê cập nhật tự động của mình sẽ kích hoạt
Thêm 1000
nhiều bản ghi vào bảng của tôi, quá đủ để bắnauto update stats
INSERT INTO stst(rn,name)
SELECT TOP 1000 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
a.name
FROM sys.objects a
Để bắn auto update stats
Select * from stst
Kiểm tra số liệu thống kê
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
Thật không may vẫn chỉ Rows
là 500
.
Ngay cả sau khi chèn 1000
các bản ghi vào bảng của tôi rõ ràng là lớn hơn 707.106781186548
trong khi thực hiện SELECT
tại sao các số liệu thống kê Tự động cập nhật không kích hoạt? Tôi đang thiếu gì ở đây