Ba thuật toán JOIN của PostgreSQL: nested loop, hash, merge — và vì sao planner chọn cái nào
JOIN không phải một phép — PostgreSQL có ba thuật toán để nối bảng, mỗi cái hợp một tình huống, và planner ước lượng để chọn. Bài này đo thật trên customers 1000 dòng ⋈ orders 2 triệu dòng: lọc một khách hàng thì Nested Loop chỉ 2.962ms; nối toàn bộ thì Hash Join (planner chọn) 133ms nhanh nhất, ép Nested Loop 187ms, ép Merge Join 301ms vì phải sắp xếp cả hai bên. Hiểu ba thuật toán để đọc plan và biết khi nào planner chọn sai.