SQL Server表變量和臨時表的區別
SQL Server表變量和臨時表盡管在穿件的語法上有些類似,但是還是有些區別,下面就將為您介紹這兩者間的區別,希望可以使您對SQL Server表變量和臨時表加深理解。
表變量創建的語法類似于SQL Server臨時表,區別就在于創建的時候,必須要為之命名。表變量是變量的一種,表變量也分為本地及全局的兩種,本地表變量的名稱都是以“@”為前綴,只有在本地當前的用戶連接中才可以訪問。全局的表變量的名稱都是以“@@”為前綴,一般都是系統的全局變量,像我們常用到的,如@@Error代表錯誤的號,@@RowCount代表影響的行數。
如我們看看創建表變量的語句:
DECLARE @News Table ( News_id int NOT NULL,
NewsTitle varchar(100), NewsContent varchar(2000), NewsDateTime datetime )
比較臨時表及表變量都可以通過SQL的選擇、插入、更新及刪除語句,它們的的不同主要體現在以下這些:
1)表變量是存儲在內存中的,當用戶在訪問表變量的時候,SQL Server是不產生日志的,而在臨時表中是產生日志的;
2)在表變量中,是不允許有非聚集索引的;
3)表變量是不允許有DEFAULT默認值,也不允許有約束;
4)臨時表上的統計信息是健全而可靠的,但是表變量上的統計信息是不可靠的;
5)臨時表中是有鎖的機制,而表變量中就沒有鎖的機制。
【編輯推薦】