Tôi biết NewID () làm gì, tôi chỉ đang cố gắng hiểu nó sẽ giúp ích như thế nào trong việc lựa chọn ngẫu nhiên. Có phải (1) câu lệnh select sẽ chọnEVERYTHING từ bảng của tôi, (2) cho mỗi mũi tên được chọn, truy cập vào auniqueidentifier được tạo bởi NewID (), (3) sắp xếp các hàng theo thisuniqueidentifier và (4) chọn ra 100 từ danh sách đã sắp xếp ?
Đúng. điều này khá chính xác (ngoại trừ nó không nhất thiết phải sắp xếp tất cả các hàng). Bạn có thể xác minh điều này bằng cách xem kế hoạch thực hiện thực tế.
SELECT TOP 100 *
FROM master..spt_values
ORDER BY NEWID()
Toán tử vô hướng máy tính thêm NEWID()
cột trên cho mỗi hàng (2506 trong bảng trong truy vấn ví dụ của tôi) thì các hàng trong bảng được sắp xếp theo cột này với 100 hàng đầu được chọn.
SQL Server thực sự không cần phải sắp xếp toàn bộ tập hợp từ vị trí 100 trở xuống vì vậy nó sử dụng TOP N
toán tử sắp xếp cố gắng thực hiện toàn bộ thao tác sắp xếp trong bộ nhớ (đối với các giá trị nhỏ của N
)