2012-02-15 41 views
5

Tôi đã làm việc với SQL cơ bản trong một vài năm rồi. Tuy nhiên, gần đây tôi gặp phải lệnh "WITH". Từ nghiên cứu của tôi, có vẻ như "WITH" là một phương pháp để tạo ra một bảng tạm thời. Nhưng theo kinh nghiệm của tôi, bạn cũng có thể sử dụng hàm băm "#" để tạo bảng tạm thời.So sánh dữ liệu tạm thời T-SQL # vs WITH

Tôi đã cố gắng tìm kiếm "WITH" và "#", nhưng vì đây là những từ tìm kiếm kỳ lạ, tôi không nhận được nhiều kết quả.

Ai đó có thể chế nhạo tôi về sự khác biệt như ưu và khuyết điểm của mỗi người?

Trả lời

4

Bạn sử dụng WITH để tạo Biểu thức bảng chung (CTE). Nó không phải là một bảng tạm thời về mặt kỹ thuật.

Bảng tạm thời giống như bất kỳ bảng nào khác nhưng được lưu trữ trong tempdb và bị ngắt khi kết nối được đóng.

Không giống như bảng tạm thời, tuy nhiên, CTE không thực sự có cửa hàng thực. Nó giống như một "cái nhìn".

Here is a great article on exactly what CTEs are. Và không giống như bảng tạm thời, mà vẫn tồn tại cho kết nối, một CTE là:

được xác định trong phạm vi thực hiện của một đơn SELECT, INSERT, UPDATE, DELETE, hoặc câu lệnh CREATE XEM

MSDN Reference on Using Common Table Expressions

0

WITH là bảng được tạo nhanh chóng (trong bộ nhớ), vì vậy nó có khả năng nhanh hơn nhiều so với bảng tạm thời (#) giống như bất kỳ bảng nào khác, nhưng nó tự động bị ngắt khi bạn đóng kết nối. Con là nó chỉ sống cho một tuyên bố

Các vấn đề liên quan