Trang chủ>  Blog >  Kiến thức chuyên môn >  CTE (WITH) – Tối ưu truy vấn phức tạp

CTE (WITH) – Tối ưu truy vấn phức tạp


Khi phân tích dữ liệu, bạn sẽ gặp những truy vấn dài, lồng nhiều cấp và khó đọc. CTE (Common Table Expression) là “vũ khí bí mật” giúp chia nhỏ truy vấn thành từng bước, dễ hiểu và dễ bảo trì – giống như chia code thành các hàm nhỏ.

  304 lượt xem

Nội dung bài viết

1. CTE là gì và vì sao quan trọng?

  • CTE là một khối tạm thời được định nghĩa bằng từ khóa WITH, có thể được tham chiếu nhiều lần trong truy vấn chính.
    • Thay vì viết một câu SQL khổng lồ, bạn tách ra thành từng bước logic: lọc dữ liệu, tính toán, rồi ghép lại.
    • Hỗ trợ đệ quy (recursive CTE) – rất hữu ích cho dữ liệu phân cấp (ví dụ: cây phòng ban, cấu trúc danh mục sản phẩm).

Ví dụ đơn giản:

WITH sales_2025 AS (

    SELECT customer_id, SUM(total_amount) AS revenue

    FROM orders

    WHERE order_date BETWEEN '2025-01-01' AND '2025-12-31'

    GROUP BY customer_id

)

SELECT c.customer_name, s.revenue

FROM customers c

JOIN sales_2025 s ON c.id = s.customer_id

ORDER BY s.revenue DESC;

2. Lợi ích khi dùng CTE

Dễ đọc & bảo trì: Mỗi CTE giống một “bước tính toán” có tên rõ ràng.
Tái sử dụng: Một CTE có thể gọi nhiều lần trong cùng truy vấn (tiết kiệm code).
Giảm lỗi: Dễ debug vì có thể chạy riêng từng CTE để kiểm tra kết quả trung gian.
Hiệu năng tốt hơn Subquery lồng nhau: Một số hệ quản trị tối ưu hóa tốt hơn khi dùng CTE.

3. Giá trị mang lại

🎓 Học viên: Học cách viết truy vấn phức tạp theo từng bước logic – dễ đọc hơn, chuyên nghiệp hơn.
🏢 Doanh nghiệp: Truy vấn dễ bảo trì, giảm thời gian đào tạo khi người mới tiếp quản code.

4. Điều kiện áp dụng & lưu ý

  • Đặt tên CTE ngắn gọn, có nghĩa (ví dụ: sales_agg, active_customers).
    • Giới hạn số lượng CTE lồng nhau (3–5 là hợp lý) – quá nhiều có thể làm truy vấn khó theo dõi.
    • Với CTE đệ quy, luôn có điều kiện dừng (stop condition) để tránh vòng lặp vô hạn.
    • Kiểm tra Execution Plan để đảm bảo CTE không tạo nhiều lần quét dữ liệu không cần thiết.

5. Kết luận

CTE giúp bạn biến những câu SQL “bún” khó đọc thành truy vấn có cấu trúc rõ ràng, dễ mở rộng và dễ kiểm thử. Đây là kỹ năng quan trọng khi làm việc với báo cáo phức tạp hoặc khi tham gia dự án lớn.

🎓 Khóa học SQL tại MCI Academy
• Học cách tách logic truy vấn thành nhiều CTE rõ ràng.
• Thực hành viết CTE đệ quy để phân tích dữ liệu phân cấp.
• Mentor hướng dẫn tối ưu CTE để tránh lạm dụng và giữ hiệu năng tốt.
📞 Hotline: 0352.433.233
📧 Email: cskh@mcivietnam.com

 

Chương trình đào tạo: Phân tích dữ liệu, Khoa học dữ liệu, Kĩ sư dữ liệu, Lập trình ứng dụng.
Chất lượng nhất - Uy tín nhất - Nhiều học viên tin tưởng nhất
Hơn 8000 học viên ưu tú đã tốt nghiệp
Đăng ký tư vấn khóa học

*Vui lòng nhập số điện thoại của bạn

*Vui lòng nhập họ tên của bạn

*Vui lòng chọn địa điểm học

*Vui lòng chọn giới tính

*Vui lòng chọn 1 trường


Các bài viết liên quan


Làm sạch dữ liệu bằng SQL: NULL, trùng lặp, chuẩn hóa

Khi làm phân tích dữ liệu, điều đầu tiên bạn cần làm không phải là vẽ biểu đồ, mà là làm sạch dữ liệu. Dữ liệu bẩn có thể đến từ form điền tay, hệ thống nhập liệu lỗi, hoặc sai sót khi merge nhiều bảng. → Trong bài viết này, bạn sẽ học cách dùng SQL để: • Xử lý giá trị NULL • Xoá hoặc lọc dòng trùng lặp • Chuẩn hóa dữ liệu trước khi phân tích hoặc đưa vào Power BI/Tableau

SQL là gì? Vì sao SQL là kỹ năng bắt buộc cho Data Analyst

Trong bài viết này, chúng ta sẽ cùng tìm hiểu SQL là gì, vì sao nó là kỹ năng bắt buộc cho Data Analyst, và cách bắt đầu học SQL hiệu quả.

Lộ trình 30 ngày chinh phục SQL

Bài viết này tổng hợp lộ trình 30 ngày dựa trên các nền tảng miễn phí (SQLBolt, W3Schools, HackerRank, LeetCode, PostgreSQL Exercises, Oracle Live SQL) và khóa học SQL tại MCI

Các bài viết liên quan