Mệnh đề WITH trong SQL

Bởi Kiên Smart Data
0 Nhận xét
Mệnh đề WITH trong SQL

WITH là một trong các cú pháp của SQL giúp cho câu SQL cho phép bạn đặt tên cho khối truy vấn phụ, có thể được tham chiếu ở một số nơi trong truy vấn SQL chính. Bài viết này SmartData sẽ cùng các bạn đi tìm hiểu mệnh đề WITH trong SQL.

Xem thêm hướng dẫn tại đây

Sử dụng WITH trong SQL để làm gì?

Mệnh đề này được giới thiệu trong tiêu chuẩn SQL lần đầu tiên vào năm 1999 và hiện có sẵn trong tất cả các loại hệ quản trị cơ sở dữ liệu có quan hệ. Mệnh đề này được coi là “tạm thời” vì kết quả không được lưu trữ vĩnh viễn ở bất kỳ đâu trong lược đồ cơ sở dữ liệu. Nó hoạt động như một dạng “view” tạm thời chỉ tồn tại trong suốt thời gian của truy vấn (chỉ có sẵn trong phạm vi thực thi của câu lệnh).

Sử dụng WITH được coi là một giải pháp thay thế gọn gàng hơn cho các bảng tạm. Nói một cách đơn giản, ưu điểm chính của mệnh đề là nó giúp tổ chức và đơn giản hóa các truy vấn phân cấp dài và phức tạp bằng cách chia chúng thành các phần nhỏ hơn, dễ đọc hơn.

Cú pháp của WITH

WITH trong SQL
WITH bang_tam as (select * from bang_du_lieu_khac) select * from bang_tam
  • WITH: Được sử dụng để tạo tập dữ liệu tạm thời.
  • bang_tam: Tên của tập dữ liệu tạm thời ảo sẽ được sử dụng trong truy vấn chính.
  • AS (….): Phần này xác định truy vấn sẽ điền vào để tạo ra bang_tam
  • SELECT * from bang_tam.: Truy vấn bảng tạm tại câu query chính.

Ví dụ

Query sau sử dụng mệnh đề WITH để đếm số các phương thức thanh toán của các đơn hàng trong bảng orders

WITH phuong_thuc_thanh_toan AS ( SELECT DISTINCT ( `Phương thức thanh toán` ) FROM orders ) SELECT count(*) FROM phuong_thuc_thanh_toan

Lợi ích khi sử dụng WITH trong SQL

Tối ưu hóa bộ nhớ và tốc độ truy vấn

Việc sử dụng bang_tam để lưu trữ tạm kết quả câu truy vấn cho phép bạn có thể tái sử dụng lại nhiều lần mà không cần phải thực thi lại câu truy vấn mỗi lần tương tác. Điều này cho phép cải thiện rất nhiều về mặt tốc độ truy vấn và bộ nhớ sử dụng. Hãy thử tưởng tượng bạn cần một tính toán phức tạp yêu cầu thời gian query mất khoảng 1 phút và tính toán đó được sử dụng lại ở 5 vị trí trong query chính. Nếu không dùng WITH, bạn sẽ phải tính toán lại cùng 1 công việc 5 lần, điều này làm cho tốc độ truy vấn bị giảm và thừa thãi không cần thiết.

Dễ đọc, dễ hiểu

Chắc chắn rồi, việc tách nhỏ mọi thứ ra bao giờ cũng giúp cho người đọc dễ hiểu, dễ hình dùng hơn việc gộp chung tất cả các truy vấn lại sử dụng sub-query. Nếu bạn có một câu truy vấn cỡ 1000 dòng và sử dụng sub-query không sử dụng WITH, lúc ấy chắc chắn mọi thứ sẽ rối tung lên.

Sử dụng WITH sẽ giúp cho code của bạn dễ hiểu dễ hình dung hơn

Cải thiện khả năng bảo trì

Bằng việc naming các kết quả truy vấn với WITH, bạn có thể thấy rõ ràng việc độ phức tạp của query được giảm đi đáng kể. Đồng thời cho phép người đọc sau dễ theo dõi rất nhiều từng đoạn nhỏ của câu truy vấn thông qua mệnh đề WITH. Từ đó việc bảo trị cũng trở nên dễ dàng hơn

Tổng kết

Bài viết trên SmartData giới thiệu cho các bạn công dụng, cú pháp và cách sử dụng mệnh đề WITH trong SQL.

Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 6 tháng của SmartData

Nếu bạn thấy bài viết hay và hữu ích, bạn có thể tham gia các kênh sau của SmartData để nhận được nhiều hơn nữa:

Bài viết liên quan

Để lại nhận xét

Copyright @2022 – Bản quyền thuộc Học viện dữ lệu Smart Data