Hỏi về group by sql

Chào anh chị em có dữ liệu mẫu như sau

img_id - width - height
1         1920    1080
2          800    1080
3          300     900
4         1920    1020

Hiện tại em muốn biết trong CSDL của mình tồn tại bao nhiêu kích thước như
1920x1080,500x500,400x400 …n.n.n
Và em dùng group by để nhóm . 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

nếu bạn đang cần group by, không dùng nó thì dùng gì khác?
cũng không ai biết bạn sử dụng group by cho vấn đề gì, cũng không biết full câu query của bạn trông như nào
sao bạn không thử luôn, rồi thấy nó nhanh hay chậm thì lên đây feedback, việc gõ câu query với group by đâu có tốn thời gian

vẫn chưa biết động cơ của câu hỏi này

6 Likes

GROUP BY là để đếm từng loại :slight_smile: còn số loại thì COUNT DISTINCT.

5 Likes

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ì :grin:

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

7 Likes

Dạ em cảm ơn anh rât nhiều ! Lý do em hỏi 1M records bởi thì hiện tại dữ liệu của em chỉ tầm 20k nên query ko có vấn đề gì !

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?