2010-11-07 29 views

Trả lời

12

Kịch bản phổ biến nhất để sử dụng các bảng tạm thời là từ bên trong một thủ tục được lưu trữ.

Nếu có logic bên trong một thủ tục lưu trữ liên quan đến thao tác dữ liệu không thể thực hiện trong một truy vấn, thì trong trường hợp đó, kết quả của một truy vấn/kết quả trung gian có thể được lưu trữ trong bảng tạm thời. tiếp tục thao tác thông qua tham gia vv để đạt được kết quả cuối cùng.

Một kịch bản phổ biến trong việc sử dụng bảng tạm thời là để lưu trữ các kết quả của một câu lệnh SELECT VÀO

Biến bảng được tương đối mới (giới thiệu trong SQL Server 2005 - như xa như tôi có thể nhớ) có thể được sử dụng thay cho bảng tạm thời trong hầu hết các trường hợp. Một số khác biệt giữa hai sẽ được thảo luận here

Trong nhiều trường hợp, đặc biệt là trong các ứng dụng OLTP, sử dụng các bảng tạm thời trong thủ tục của bạn có nghĩa là bạn THÁNG thể có logic xử lý kinh doanh trong cơ sở dữ liệu của bạn và có thể là một cân nhắc cho bạn hãy xem xét lại thiết kế của bạn - đặc biệt là trong trường hợp các hệ thống cấp n có một lớp nghiệp vụ riêng biệt trong ứng dụng của họ.

9

Sự khác biệt chính giữa ba yếu tố này là vấn đề tuổi thọ và phạm vi.

Bằng bảng toàn cầu, tôi giả sử bạn có nghĩa là một tiêu chuẩn, chạy của máy nghiền, bảng. Các bảng được sử dụng để lưu trữ dữ liệu liên tục. Chúng có thể truy cập được đối với tất cả người dùng đã đăng nhập. Mọi thay đổi bạn thực hiện đều hiển thị với người dùng khác và ngược lại.

Bảng tạm thời chỉ tồn tại để lưu trữ dữ liệu trong một phiên. Thời gian tốt nhất để sử dụng bảng tạm thời là khi bạn cần lưu trữ thông tin trong máy chủ SQL để sử dụng qua một số giao dịch SQL. Giống như một bảng bình thường, bạn sẽ tạo nó, tương tác với nó (chèn/cập nhật/xóa) và khi bạn làm xong, bạn sẽ thả nó. Có hai sự khác nhau giữa một bảng và một bảng tạm thời.

  1. Bảng tạm thời chỉ hiển thị với bạn. Ngay cả khi người khác tạo bảng tạm thời có cùng tên, sẽ không ai khác có thể thấy hoặc ảnh hưởng đến bảng tạm thời của bạn.
  2. Bảng tạm thời tồn tại miễn là bạn đã đăng nhập, trừ khi bạn thả nó một cách rõ ràng. Nếu bạn đăng xuất hoặc bị ngắt kết nối, SQL Server sẽ tự động dọn dẹp nó cho bạn. Điều này cũng có nghĩa là dữ liệu không liên tục. Nếu bạn tạo một bảng tạm thời trong một phiên và đăng xuất, nó sẽ không có ở đó khi bạn đăng nhập lại.

Biến bảng hoạt động giống như bất kỳ biến nào trong SQL Server. Điều này được sử dụng để lưu trữ dữ liệu để sử dụng trong một giao dịch duy nhất. Đây là một tính năng tương đối mới của TSQL và thường được sử dụng để truyền dữ liệu giữa các thủ tục - giống như truyền một mảng. Có ba khác biệt giữa một bảng và một biến bảng.

  1. Giống như bảng tạm thời, nó chỉ hiển thị cho bạn.
  2. Bởi vì nó là một biến, nó có thể được chuyển qua lại giữa các thủ tục được lưu trữ.
  3. Bảng tạm thời chỉ tồn tại trong giao dịch hiện tại.Một khi SQL Server kết thúc một giao dịch (với các câu lệnh GO hoặc END TRANSACTION) hoặc nó nằm ngoài phạm vi, nó sẽ được deallocated.

Cá nhân tôi tránh sử dụng các biến bảng và bảng tạm thời, vì một vài lý do. Đầu tiên, cú pháp cho chúng là Microsoft cụ thể. Nếu chương trình của bạn sẽ tương tác với nhiều hơn một RDBMS, đừng sử dụng chúng. Ngoài ra, các bảng tạm thời và các biến bảng có xu hướng làm tăng độ phức tạp của một số truy vấn SQL. Nếu mã của bạn có thể được thực hiện bằng cách sử dụng một phương pháp đơn giản hơn, tôi khuyên bạn nên đi với đơn giản.

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