Điều này thực sự phụ thuộc vào chỉ mục và loại dữ liệu.
Sử dụng cơ sở dữ liệu Stack Overflow làm ví dụ, đây là bảng của người dùng:
Nó có PK / CX trên cột Id. Vì vậy, đó là toàn bộ dữ liệu bảng được sắp xếp theo Id.
Với chỉ số đó là chỉ mục duy nhất, SQL phải đọc toàn bộ nội dung đó (sans các cột LOB) vào bộ nhớ nếu nó chưa có ở đó.
DBCC DROPCLEANBUFFERS-- Don't run this anywhere near prod.
SET STATISTICS TIME, IO ON
SELECT u.Id
INTO #crap1
FROM dbo.Users AS u
Thời gian thống kê và hồ sơ io trông như thế này:
Table 'Users'. Scan count 7, logical reads 80846, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 2406 ms, elapsed time = 446 ms.
Nếu tôi thêm một chỉ mục không bao gồm bổ sung vào chỉ Id
CREATE INDEX ix_whatever ON dbo.Users (Id)
Bây giờ tôi có một chỉ mục nhỏ hơn nhiều đáp ứng truy vấn của tôi.
DBCC DROPCLEANBUFFERS-- Don't run this anywhere near prod.
SELECT u.Id
INTO #crap2
FROM dbo.Users AS u
Hồ sơ tại đây:
Table 'Users'. Scan count 7, logical reads 6587, physical reads 0, read-ahead reads 6549, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 2344 ms, elapsed time = 384 ms.
Chúng tôi có thể đọc ít hơn rất nhiều và tiết kiệm một ít thời gian CPU.
Không có thêm thông tin về định nghĩa bảng của bạn, tôi thực sự không thể cố gắng tái tạo những gì bạn đang cố gắng để đo lường tốt hơn.
Nhưng bạn đang nói rằng trừ khi có một chỉ mục cụ thể trên cột đơn độc đó, các cột / trường khác cũng sẽ được quét? Đây có phải chỉ là một nhược điểm cố hữu đối với thiết kế của các bảng hàng? Tại sao các lĩnh vực không liên quan sẽ được quét?
Vâng, điều này là cụ thể cho các bảng hàng. Dữ liệu được lưu trữ theo hàng trên các trang dữ liệu. Ngay cả khi dữ liệu khác trên trang không liên quan đến truy vấn của bạn, toàn bộ hàng> trang> chỉ mục đó cần được đọc vào bộ nhớ. Tôi sẽ không nói rằng các cột khác được "quét" nhiều như các trang chúng tồn tại được quét để truy xuất giá trị duy nhất trên chúng có liên quan đến truy vấn.
Sử dụng ví dụ về danh bạ của ol: ngay cả khi bạn chỉ đọc số điện thoại, khi bạn lật trang, bạn đang chuyển họ, tên, địa chỉ, v.v. cùng với số điện thoại.