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ỏ.
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

Các khóa học
- Mastering AWS : From Basics to Applications Specialized
- Data Engineer Track Specialized
- Combo Data Engineering Professional Hot
- AI & DASHBOARD – CHỈ 990K Hot
- Combo Python Level 1 & Level 2 Bestseller
- Business Intelligence Track Hot
- Data Science Track Bestseller
- Data Analyst Professional (Data Analyst with Python Track) Bestseller
- RPA UiPath Nâng Cao: Chiến Thuật Automation Cho Chuyên Gia Specialized
- RPA UiPath cho Người Mới Bắt Đầu: Thành Thạo Automation Chỉ Trong 1 Ngày Specialized
- Business Analyst Fast Track Bestseller
- Business Analyst Bestseller
Đă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 giới tính
*Vui lòng chọn 1 trường