Câu lệnh SQL thuần sử dụng khi nào?

Chào ạ, Cho em hỏi hiện nay ngôn ngữ nào cũng có ORM, java có hibernate, C# có Entity Framework, … vậy các câu lệnh SQL thuần "SELECT * FROM ...." sủ dụng trong trường hợp nào ạ ?

Có vài lý do để viết Native SQL Query thay vì dùng ORM hay các dạng các dạng syntax SQL-like

  • Một số tính năng, specific data type của db không được ORM hỗ trợ. VD: JSONB của Postgres, SQL UNION
  • Đối với query JOIN nhiều bảng nên cân nhắc viết native SQL. Lạm dụng ORM để query có thể gây giảm performance do không kiểm soát được relationship của entity dẫn đến JOIN quá nhiều bảng không cần thiết.
  • Đối với query phức tạp. Dùng ORM hay các dạng lib/framework hỗ trợ code logic ở tầng db như jOOQ, JPA Criteria API (Java), LINQ (C#) gây khó debug vì SQL log của các lib/framework này không show raw SQL. Với trường hợp này chỉ query để lấy data, không chèn logic của app lên câu query.
12 Likes

Tuyệt vời, lúc hỏi mình chưa đi làm, bây giờ đi làm rồi xác nhận là rất đúng

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?