2013-05-25 34 views
78

Có cần sử dụng # trước khi tạo bảng tạm thời trong máy chủ SQL không?Có cần sử dụng # để tạo các bảng tạm thời trong máy chủ SQL không?

Ví dụ:

SELECT column1, column2, someInt, someVarChar 
INTO ItemBack1 
FROM table2 
WHERE table2.ID = 7 

Đối ItemBack1 là nó cần thiết để sử dụng biểu tượng #?

Nếu không, thì việc sử dụng # trong việc tạo bảng tạm thời là gì?

+3

Có. # tạo bảng tạm thời. Nếu không có nó sẽ tạo ra một bảng. –

Trả lời

130

Có. Bạn cần tiền tố tên bảng với "#" (băm) để tạo các bảng tạm thời.

Nếu bạn KHÔNG cần bảng sau, hãy tiếp tục & tạo bảng. Bảng tạm thời rất giống các bảng thông thường. Tuy nhiên, nó được tạo ra trong tempdb. Ngoài ra, nó chỉ có thể truy cập thông qua phiên hiện tại tức là Đối với EG: nếu người dùng khác cố gắng truy cập bảng tạm thời do bạn tạo, anh ấy sẽ không thể làm như vậy.

"##" (double-băm tạo "toàn cầu" bảng temp có thể được truy cập bởi các buổi khác cũng

Tham khảo các liên kết dưới đây để biết các khái niệm cơ bản của bảng tạm thời:. http://www.codeproject.com/Articles/42553/Quick-Overview-Temporary-Tables-in-SQL-Server-2005

Nếu nội dung của bảng của bạn nhỏ hơn 5000 hàng & KHÔNG chứa các loại dữ liệu như nvarchar (MAX), varbinary (MAX), hãy cân nhắc sử dụng các Biến Bảng. được lưu trữ trong RAM.They are stored in tempdb as well, not in RAM.

DECLARE @ItemBack1 TABLE 
(
column1 int, 
column2 int, 
someInt int, 
someVarChar nvarchar(50) 
); 

INSERT INTO @ItemBack1 
SELECT column1, 
     column2, 
     someInt, 
     someVarChar 
    FROM table2 
WHERE table2.ID = 7; 

More Info trên Biến Bảng: http://odetocode.com/articles/365.aspx

+11

Trong SQL Server, cú pháp SELECT là INSERT INTO @ ItemBack1 SELECT column1, column2, someInt, someVarChar FROM table2 WHERE table2.ID = 7 – mhenry1384

+7

Bảng biến không được lưu trữ trong RAM, chúng cũng được lưu trữ trong tempdb. Tôi khuyên bạn không nên sử dụng các biến bảng trừ khi bạn hiểu một số nhược điểm của chúng, vì số lượng hàng của chúng được tự động đặt thành một và các kế hoạch xấu có thể xảy ra. – ConstantineK

+0

Bạn có thể cung cấp nguồn cho 5000 hàng, hạn chế nvarchar (max), varbinary (max) không? Điều này được cho phép, nhưng tôi không chắc chắn lý do tại sao nó không được khuyến khích. – Brad

11

Sự khác biệt giữa hai bảng này ItemBack1#ItemBack1 là người đầu tiên trên là dai dẳng (vĩnh viễn), nơi là khác chỉ là tạm thời.

Bây giờ nếu có một cái nhìn tại câu hỏi của bạn một lần nữa

Có cần thiết phải sử dụng # để tạo bảng temp trong máy chủ sql?

Câu trả lời là , bởi vì không có này trước # bảng sẽ không phải là một bảng tạm thời, nó sẽ không phụ thuộc vào tất cả các phiên và phạm vi.

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