Câu hỏi thú vị luôn lấy nó khi đọc số nguyên đó nhanh hơn và chưa bao giờ thực sự thử nghiệm. Tôi lấy 1M Tên và họ ngẫu nhiên từ danh sách Liên hệ từ dữ liệu của tôi thành cơ sở dữ liệu không có chỉ mục hoặc khóa chính chỉ là dữ liệu thô. Không có phép đo nào được thực hiện trên phạm vi dữ liệu của tôi trong một trong các cột chưa được chuẩn hóa để phản ánh thực tế của cơ sở dữ liệu của tôi chứ không phải là một bộ thống kê thuần túy.
select top 100 * from tblScratch where contactsurname = '<TestSurname>' order by NEWID()
select top 100 * from tblScratch where contacttyperef = 1-22 order by NEWID()
Newid có thể ngẫu nhiên danh sách dữ liệu mỗi lần. Nhanh chóng chạy điều này cho 20 họ và 20 loại. Truy vấn đã được chạy họ hơn ref sau đó họ. Tìm kiếm số tham chiếu nhanh hơn gần gấp 4 lần và sử dụng khoảng 1/2 nên sách đã đúng trong những năm trước.
String -
SELECT TOP 100 * FROM tblScratch WHERE contactsurname = 'hoare' ORDER BY NEWID()
Duration 430ms
Reads 902
CPU 203
Integer -
SELECT TOP 100 * FROM tblScratch WHERE contacttyperef = 3 ORDER BY NEWID()
Duration 136ms
Reads 902
CPU 79
Trên một bảng mẫu tôi mong chờ các SamplesId là clustered index. Sự hiện diện và hoặc các loại chỉ số có tác dụng lớn. Đây có phải là câu hỏi thực hay lý thuyết? –
@SteveHenderson thay đổi nhận xét của bạn thành "mong đợi SamplesId làm khóa chính" và tôi đồng ý với bạn 100% :) Cột Id thường chỉ định khóa, có thể hoặc không thể là chỉ mục được nhóm. Tất nhiên, đó chỉ là một giả định ... –
@StuartAinsworth No - Tôi cũng hy vọng nó sẽ là chỉ số nhóm. Với một bảng tra cứu đơn giản (Id và Name, với một số thứ khác), tôi sẽ mong đợi thứ tự vật lý của bảng tra cứu đó bằng Id (khóa chính và chỉ mục nhóm). –