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

  307 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


🧠 SQL for Data Scientist – Kỹ Năng “Xương Sống” Trong Khoa Học Dữ Liệu 🧱⚡

“SQL không chỉ là một ngôn ngữ truy vấn — mà là vũ khí bí mật giúp Data Scientist hiểu, xử lý và khai thác dữ liệu ở tốc độ tên lửa 🚀

🗄️ SQL for Data Scientist – “Kỹ Năng Sống Còn” Trong Data Science

Khi nói về kỹ năng chuyên môn của Data Scientist, người ta thường nghĩ đến mô hình, Python, hay visualization. Nhưng trong thực tế dự án, bạn sẽ dành phần lớn thời gian để truy vấn dữ liệu, tổng hợp, lọc và chuẩn bị dataset — và công cụ cốt lõi chính là SQL 🧠⚡

10 SQL Pattern Quan Trọng Cho Data Analyst – Phải Thuộc Lòng

SQL là “vũ khí số 1” của mọi Data Analyst. Nhưng không phải ai cũng biết cách dùng SQL hiệu quả – nhiều bạn chỉ dừng ở SELECT, WHERE đơn giản. 💡 Đây là 10 SQL pattern (mẫu câu truy vấn) phổ biến nhất trong công việc Data Analyst, kèm ví dụ thực tế để bạn có thể copy–paste và áp dụng ngay.

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