Có, vì việc sử dụng DISTINCT sẽ (đôi khi theo nhận xét) khiến các kết quả được sắp xếp theo thứ tựViệc sắp xếp hàng trăm bản ghi mất nhiều thời gian. Hãy thử GROUP BY tất cả các cột của bạn, đôi khi nó có thể khiến trình tối ưu hóa truy vấn chọn một thuật toán hiệu quả hơn (ít nhất là với Oracle, tôi nhận thấy hiệu suất tăng đáng kể).
Sử dụng phân biệt có hại không?
Chà, việc sử dụng "khác biệt" không đúng cách không chỉ che giấu vấn đề thực sự (các mục nhập trùng lặp trong bảng, thiếu điều kiện trong mệnh đề on) như đã thảo luận ở trên mà còn làm giảm hiệu suất truy vấn… Điều này sẽ làm cho Chi phí IO (số lần đọc logic) của truy vấn tăng lên đáng kể.
Khác biệt có làm cho truy vấn chậm hơn không?
Rất ít truy vấn có thể hoạt động nhanh hơn trong chế độ CHỌN DISTINCT và rất ít truy vấn sẽ thực hiện chậm hơn(nhưng không chậm hơn đáng kể) trong chế độ CHỌN DISTINCT nhưng đối với trường hợp muộn hơn thì có thể rằng ứng dụng có thể cần phải kiểm tra các trường hợp trùng lặp, điều này làm thay đổi gánh nặng hiệu suất và độ phức tạp cho ứng dụng.
Nên sử dụng riêng biệt hay GROUP BY?
Trong MySQL, DISTINCT có vẻ nhanh hơn một chút so với GROUP BYnếu Trường không được lập chỉ mục. DISTINCT chỉ loại bỏ các hàng trùng lặp nhưng GROUP BY dường như sắp xếp chúng thêm vào.
Tại sao chúng ta không nên sử dụng khác biệt trong SQL?
Nếu lựa chọn khác biệt ở đó để 'khắc phục' sự cố thì đổi lại bạn có khả năng nhận được hiệu suất kém. GROUP BY cho phép bạn sử dụng các hàm tổng hợp, như AVG, MAX, MIN, SUM và COUNT. DISTINCT chỉ xóa các bản sao.