2013-06-03 35 views
27

Tôi gặp sự cố khi quyết định có sử dụng chế độ xem hoặc bảng tạm thời hay không.Những gì để sử dụng? Xem hoặc tạm thời Bảng

Tôi có một thủ tục được lưu trữ mà tôi gọi từ chương trình. Trong đó SP i lưu trữ kết quả của một truy vấn dài trong một bảng tạm thời, đặt tên cho các cột và thực hiện một truy vấn khác trên bảng đó lưu trữ các kết quả trong nhãn hoặc một GridView hoặc bất cứ điều gì và thả Bảng tạm thời. Tôi cũng có thể lưu trữ kết quả truy vấn trong chế độ xem và thực hiện truy vấn trên chế độ xem đó. Vì vậy, những gì là tốt hơn hoặc trong những trường hợp nào tôi CÓ để sử dụng một VIEW/Temp Bảng.

Theo nghiên cứu của tôi, chế độ xem có lợi ích về: Đặc điểm bảo mật, tính đơn giản và tên cột. Bảng tạm thời của tôi cũng đáp ứng tất cả những điều đó (theo ý kiến ​​của tôi).

+1

Trừ khi bạn nêu rõ mục tiêu của mình và xếp hạng chúng về tầm quan trọng của chúng đối với bạn, đây thực sự là một câu hỏi quá chung chung. – Tim

+0

Chỉ có thể trả lời cho câu hỏi này là: Bạn sẽ phải thử cả hai và xem cái nào hoạt động tốt hơn. –

Trả lời

28

Nếu truy vấn là "dài" và bạn đang truy cập kết quả từ nhiều truy vấn, thì bảng tạm thời là lựa chọn tốt hơn.

Một chế độ xem, nói chung, chỉ là một đoạn ngắn cho một tuyên bố select. Nếu không ngụ ý rằng kết quả sẽ được chạy và xử lý. Nếu bạn sử dụng chế độ xem, kết quả sẽ cần phải được tạo lại mỗi khi được sử dụng. Mặc dù các lần chạy tiếp theo của chế độ xem có thể hiệu quả hơn (giả sử vì các trang được truy vấn xem sử dụng nằm trong bộ nhớ cache), một bảng tạm thời thực sự lưu trữ kết quả.

Trong SQL Server, bạn cũng có thể sử dụng các biến bảng (declare @t table . . .).

Sử dụng bảng tạm thời (hoặc biến bảng) trong một thủ tục được lưu trữ đơn lẻ dường như có ít tác động về mặt bảo mật, đơn giản và tên cột. Bảo mật sẽ được xử lý bằng cách truy cập vào thủ tục được lưu trữ. Tên cột là cần thiết cho một trong hai giải pháp. Đơn giản là khó để đánh giá mà không có thêm thông tin, nhưng không có gì dính ra như là đặc biệt phức tạp.

6

phụ thuộc

Một quan điểm phải tái tạo quá trình xử lý "truy vấn dài" của bạn mỗi khi nó được chạy, trong khi một bảng tạm thời lưu trữ các kết quả.

vì vậy bạn có muốn sử dụng nhiều bộ xử lý hơn hoặc nhiều bộ nhớ hơn không?

Bạn có thể lưu trữ một số giá trị xem (chỉ mục liên tục) có thể giúp xử lý, nhưng bạn không cung cấp đủ thông tin để thực sự khám phá điều này.

Nếu bạn đang nói về việc lưu trữ dữ liệu để sử dụng trong một cuộc gọi thủ tục đơn lẻ, thì bảng tạm thời là cách để thực hiện.

2

Đây thực sự là câu hỏi và câu trả lời cụ thể về hoạt động và hoạt động có thể thay đổi tùy theo yêu cầu của kịch bản. Tuy nhiên, một điểm nhỏ mà tôi muốn thêm là nếu bạn đang sử dụng chế độ xem để lưu trữ kết quả của truy vấn phức tạp, lần lượt được sử dụng trong hoạt động của GridView, thì có thể phiền hà khi thực hiện thao tác cập nhật trên phức tạp lượt xem. Ngược lại, Temp Tables có thể đủ cho điều này một cách hoàn hảo.

Một lần nữa, có trường hợp Chế độ xem có thể là lựa chọn tốt hơn [như trong nhiều máy chủ cơ sở dữ liệu nếu không được xử lý đúng cách] nhưng tùy thuộc vào việc bạn muốn làm.

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