Tôi đang chạy một truy vấn như thế này trong MSSQL2008:Có phải "SELECT COUNT (cột)" nhanh hơn/chậm hơn "SELECT COUNT (*)" không?
select count(*)
from t1
inner join t2 on t1.id = t2.t1_id
inner join t3 on t1.id = t3.t1_id
Giả t1.id
có một hạn chế NOT NULL
. Vì chúng là các kết nối bên trong và t1.id
không bao giờ có thể rỗng, sử dụng count(t1.id)
thay vì count(*)
nên tạo kết quả cuối cùng giống hệt nhau. Câu hỏi của tôi là: Liệu hiệu suất có giống nhau không?
Tôi cũng tự hỏi liệu các kết nối có thể ảnh hưởng đến điều này hay không. Tôi nhận thấy rằng việc thêm hoặc xóa một kết nối sẽ ảnh hưởng đến cả hiệu suất và độ dài của tập kết quả. Giả sử rằng không thay đổi mẫu kết nối, bạn đặt count
để chỉ nhắm mục tiêu một bảng. Nó có tạo nên sự khác biệt nào không? Nói cách khác, có một sự khác biệt giữa hai truy vấn sau đây:
select count(*) from t1 inner join t2 on t1.id = t2.t1_id
select count(t1.*) from t1 inner join t2 on t1.id = t2.t1_id
COUNT(id) vs. COUNT(*) in MySQL câu trả lời câu hỏi này cho MySQL, nhưng tôi không thể tìm thấy câu trả lời cho MS-SQL đặc biệt, và tôi không thể tìm thấy bất cứ điều gì ở tất cả những gì lấy yếu tố join
.
LƯU Ý: Tôi đã cố gắng tìm thông tin này trên cả Google và SO, nhưng thật khó để tìm ra cách từ tìm kiếm của tôi.
Bản sao có thể xảy ra: http://stackoverflow.com/questions/1221559/count-vs-count1 http://stackoverflow.com/questions/2710621/count -vs-count1-vs-countpk-which-is-better –