Hi @viethuy13
Tuy nhiên em muốn biết nếu group by 1m records như vậy dùng group by có ảnh hưởng tốc độ truy vấn ko ? em xin cảm ơn
Cái này tùy vào cấu hình máy chủ em cài đặt database và em sử dụng database engine nào ( MySQL, PostgreSQL, … )
=> Đơn giản nhất, em cứ thử tạo (dummy) ngẫu nhiên 1m records như em thắc mắc rồi chạy thử câu SQL của em xem có chạy nổi không?
Nếu chạy được, thì OK khỏi suy nghĩ gì
Nếu chạy không được, thì thử một trong những cách sau:
① Tuning câu SQL, nếu em phải dùng DISTINCT thì nên tìm cách tránh vì nó rất nặng.
② Tăng thêm cấu hình máy chủ ( tăng RAM, CPU )
③ Chỉnh lại câu SQL để xử lý dữ liệu theo từng phân đoạn (range) thay vì scan entire table.
Đối với ý số ③, ví dụ em đánh index cho cột width
sau đó khi viết query, thay vì scan all table thì chia ra từng range như là
- width ∈ [0, 1000]
- width ∈ [1001, 2000]
- width ∈ [2001, 3000]
- … etc …
Như vậy, em có thể chạy query nhiều lần để lấy đủ data em mong muốn và dữ liệu phải xử lý cho mỗi query sẽ giảm nhiều.
Thân,
Nguyễn Hữu Quyền