Tài liệu chuyên sâu Subquery & CTE
– 8 bài học từ căn bản đến nâng cao.
– 60+ code snippet PostgreSQL chạy được.
– Anti-patterns, performance tuning, recursive query.
– Kèm 30 bài tập thực hành.
Vì sao tài liệu này ra đời
Subquery và CTE là hai công cụ căn bản nhưng thường xuyên bị dùng sai trong SQL. Đa số developer biết viết Subquery căn bản nhưng không hiểu khi nào nên chuyển sang CTE, khi nào nên dùng JOIN, khi nào cần Recursive CTE. Hệ quả: truy vấn chạy chậm 10–100 lần so với cần thiết, hoặc code khó đọc đến mức không ai dám sửa.
Tài liệu này không phải SQL tutorial cho người mới — nó giả định bạn đã biết SELECT, JOIN, WHERE, GROUP BY. Mục tiêu của 8 bài học: chuyển bạn từ “biết dùng” sang “dùng đúng” Subquery và CTE.
Nội dung 8 bài học
– Bài 1: Subquery căn bản — Scalar, Row, Table.
– Bài 2: Subquery với IN, EXISTS, ANY, ALL.
– Bài 3: Correlated Subquery — đệ quy nhẹ nhàng.
– Bài 4: CTE căn bản — WITH clause và lợi ích.
– Bài 5: Recursive CTE — xử lý dữ liệu phân cấp.
– Bài 6: Multiple CTEs — chuỗi nhiều CTE trong 1 query.
– Bài 7: Performance — Subquery vs CTE vs Temp Table.
– Bài 8: Anti-patterns và best practices.
Hai phụ lục
– Phụ lục A: Quick Reference Card (in ra dùng).
– Phụ lục B: 30 bài tập thực hành (10 dễ + 10 trung + 10 khó).
Đối tượng phù hợp
– Data Analyst, SQL Developer, Backend Engineer.
– Đã biết SELECT, JOIN, WHERE, GROUP BY căn bản.
– Muốn nâng cấp từ “biết dùng” sang “dùng đúng”.
– Code chủ yếu PostgreSQL 14+. Có chú thích nếu khác MySQL/SQL Server.
Tải tài liệu
Tải DOCX — Subquery & CTE 8 bài học
Định dạng: .docx | Cập nhật: 05/2026
Năm điều quan trọng nhất
– EXISTS thường tốt hơn IN. JOIN thường tốt hơn correlated subquery.
– CTE không nhanh hơn subquery — nhưng đọc dễ hơn nhiều.
– Recursive CTE là magic cho hierarchical data — phải có termination.
– Temp table + index có giá khi data trung gian lớn và dùng nhiều lần.
– EXPLAIN ANALYZE trên data thật — đừng tin lý thuyết, đo lường.
Một SQL developer giỏi không phải là người viết được query phức tạp nhất — mà là người biến query phức tạp thành đơn giản và dễ đọc.
Minh An
Code snippets trong tài liệu được test trên PostgreSQL 14+. Một số syntax có thể khác trên MySQL, SQL Server, Oracle — kiểm tra documentation của DBMS đang dùng trước khi áp dụng vào production.