Bài viết hôm nay mình sẽ chia sẻ cho các bạn Data Analyst những tips để tối ưu truy vấn SQL trong công việc. Vậy tại sao vấn đề tối ưu câu lệnh SQL nên được Data Analyst quan tâm?
Câu trả lời là: việc tối ưu các truy vấn SQL giúp giảm lượng thời gian người dùng cần để nhận được kết quả sau khi chạy (run) câu lệnh truy vấn; bên cạnh đó, việc này cũng giúp làm giảm resource (tài nguyên, chi phí) được sử dụng để xử lý truy vấn. Hơn hết, có thể bạn chưa biết, việc viết các câu lệnh tối ưu có thể khiến bạn có thêm điểm cộng trong mắt sếp đấy nhé.
Trong bài học này, bạn sẽ học cách xác định thời điểm có thể cải thiện các truy vấn của mình và cách cải thiện chúng.
1. Chỉ SELECT fields, thay vì SELECT *
Bạn chỉ nên select để xem những dữ liệu cần thiết từ bảng thay vì xem hết tất cả dữ liệu, việc này giúp làm giảm chi phí truy vấn (query cost) và xử lý những dữ liệu không mong muốn.
Hình 1: Tiết kiệm chi phí truy vấn khi biết cách chọn SELECT fields
Hình 1: Tiết kiệm chi phí truy vấn khi biết cách chọn SELECT fields
2. Giảm table size
Để cải thiện tốc độ truy vấn, bạn nên lọc dữ liệu để chỉ lấy các quan sát bạn cần mà thôi. Cách bạn làm điều này sẽ phụ thuộc hoàn toàn vào vấn đề mà bạn đang cố gắng giải quyết. Ví dụ: nếu bạn có dữ liệu chuỗi thời gian, việc giới hạn trong 1 thời gian ngắn sẽ có thể giúp truy vấn của bạn chạy nhanh hơn nhiều, đặc biệt là lúc bạn chỉ đang thực hiện EDA (Exploratory Data Analysis) mà thôi.
Hình 2: Cải thiện tốc độ truy vấn nếu biết cách giảm table size
Hình 2: Cải thiện tốc độ truy vấn nếu biết cách giảm table size
3. Hạn chế truy vấn con được liên kết (linked subqueries)
Linked subqueries phụ thuộc vào truy vấn từ cấp độ gốc (parent) hoặc từ nguồn bên ngoài (external source). Nó chạy từng hàng một, vì vậy tốc độ chu kỳ trung bình sẽ bị ảnh hưởng rất nhiều nếu dùng linked subqueries.
Hình 3: Linked subqueries
Hình 3: Linked subqueries
4. Dùng WHERE thay vì HAVING
Mệnh đề HAVING dùng để lọc các hàng (rows) sau khi tất cả các hàng được chọn và nó hoạt động giống như một bộ lọc. Các câu lệnh HAVING được xác định theo thứ tự thao tác SQL sau các câu lệnh WHERE. Do đó, việc thực hiện truy vấn WHERE sẽ nhanh hơn.
Hình 4: Trong nhiều trường hợp, truy vấn WHERE sẽ nhanh hơn
Hình 4: Trong nhiều trường hợp, truy vấn WHERE sẽ nhanh hơn
Hy vọng bài viết trên có thể giúp các bạn có thêm những tips hay và áp dụng thành công được ngay trong công việc Data Analyst của mình nhé!
----------------
Các kênh chia sẻ thông tin về Data Analyst của mình:
👉 Thảo luận với mình tại group chia sẻ chân thành về Data: https://bit.ly/vietnamdataanalystgroup
👉 Kênh Youtube Data Coaching: https://bit.ly/DataAnalystSharing
👉 Facebook Ngô Vinh: https://www.facebook.com/ngovinhdata
👉 Thông tin về khoá coaching:
https://bit.ly/DataAnalystCoaching1on1detail