Tuesday, August 24, 2004

 

Difference between Table Variable and Temporary Table

Table variables were introduced in SQL Server 2000. Many times they are presented as a replacement for temporary tables. There is a lot of arguement about the performance advantages of one over the other. It is generally believed that table variables give better performance than temporary tables. But there are so many cases reported where the usage of table variable slow down the performance, especially when the number of rows involved are high. So now the general recommendation is that use a table variable only if there is a performance gain over the temp table.

Lets see what are the basic difference between them.

1. Contrary to the popular belief that table variables exists in memory, KB Article 305977 states that "A table variable is not a memory-only structure. Because a table variable might hold more data than can fit in memory, it has to have a place on disk to store data. Table variables are created in the tempdb database similar to temporary tables. If memory is available, both table variables and temporary tables are created and processed while in memory (data cache)."

The implementation of table variables is from a logging and tempdb usage very similar to temporary tables.

2. You can create indexes on a temp table. Table variables does not support explicit index creation. You can create indexes on table variables using the PRIMARY KEY and Unique constraints.

3. User defined functions are not permitted to do DDL operations. But UDFs can CREATE, INSERT, UPDATE, DELETE and RETURN table variables. (But you cannot use user-defined data types in the table variable you declare for the return value.)

4. Table variables are always local to its scope while Temporary tables can be global or local. So table variables cannot be accessed from calling procedures in case of nested sps.

5. Stored Procedure Recompilations. Using table variables can reduce the number of stored procedure recompilations. thats one place where table variables excel over temp tables.

6. Table variables do not maintain statistics like temporary tables. This might lead to bad execution plan and slow performance when dealing with higher number of rows.

7. Temp tables can be ALTERed. But you cannot change the definition of a table variable after the initial DECLARE statement.

8. Parallelism is not possible when you insert into a table variable.

9. You cannot do

INSERT INTO @tablevar

EXEC yourspname

But

INSERT INTO #temptable

EXEC yourspname

is possible.

10. You cannot do

SELECT * INTO @tableVar FROM source

But

SELECT * INTO #temptable FROM source

is possible.

11. You cannot truncate a table variable.

DECLARE @x table(a int)
INSERT INTO @x VALUES(1)
TRUNCATE TABLE @x

produces a syntax Error.

But the same is possible with temp table.

DECLARE #x table(a int)
INSERT INTO #x VALUES(1)
TRUNCATE TABLE #x

12. Transactions involving table variables last only for the duration of an update on the table variable. Thus, table variables require less locking and logging resources. That is table variables are automatically committed, where as temporary tables can be included in a transaction. This can make a performance difference.

13. Join Syntax. You MUST use an alias when referring a table variable in a JOIN. The following query will throw an error.

USE PUBS
GO
DECLARE @x table(someid varchar(15))

INSERT INTO @x

SELECT Top 10 title_id FROM Titles
SELECT * FROM Titles

INNER JOIN @x
ON Titles.title_id = @x.someid

It should be written as

DECLARE @x table(someid varchar(15))
INSERT INTO @x
SELECT Top 10 title_id FROM Titles
SELECT * FROM Titles

INNER JOIN @x a
ON Titles.title_id = a.someid

Temporary tables doesnt have such limitations.

14. Temporary tables can be explicitly destroyed using DROP statement.

15. You cannot assign a table variable to another as in the case of other variables.

16. CHECK constraints, DEFAULT values, and computed columns in the table type declaration cannot call user-defined functions.

17. "Display Estimated Execution Plan" option in query analyser does'nt work with T-SQL code that has a reference to Temporary tables.

18. More, anyone...?



Comments:
Hi,
Your article was quite informative. but I feel you havent mentioned the good things about the table varibales. if you can write that also i feel most of your points may become null. as the table variables should be used where it is supposed to use. what do you think ?
 
Catch22 with relational updates to temp tables; this works with #temp tables but breaks with @memory tables and theres no way to fix it because aliasing isn't allowed on the update target:
update @table3 set data = x.data from @table2 AS x where x.x = @table3.x
 
You said: "You MUST use an alias when referring a table variable in a JOIN."

That's not true: You can remove the error by putting brackets around the name of the table variable, before the period, and not use an alias.

Old article, but still relevant.
 
Also, Lazywriter said "theres no way to fix it".

Yes, there is: [@Table3].x

David
 
this is really a informative article. It help me lot to take decision on what to choose tempTable or Table variable

---KALLOL SAMANTA
 
its a Nice article, but the statement INSERT @tablevar
EXEC yourspname

will work with table variables. Test this at your side
 
Facts to consider about gw2 gold live through yet questing

Better participants in Rift incredibly nicely a tiny little lost on what the proper progressing promenade in Rift. All of your rookies Rift ranking up hints and tips genuinely help to describe some of buy Guild wars 2 gold many available choices to gain experience of Rift.
When just beginning in Rift need Guild wars 2 gold to know begin by a quick look at your road. This can let you know all sorts of regarding in which you are since what kinds of steps you might find to do you deal with. Look at place and discover which symbols generally rifts, Rift invasions, Also missions. Them physical events will let you gain endure.
When you type in life jointly on your new Rift player excellent in the middle of varied gatherings to enjoy. A lot of such smaller dresses missions perhaps may be perhaps the article and will help you are aware the tecnicalities of this online game. You need to conduct they missions as however they can. let you your initial. Attached to finishing of a trip you would gain quite a few experience. Superb to engaging missions is that you probably will be hurting dogs reality crafting your kids this gives you go through.
Another fantastic way to gain experience with Rift is through joining with closing Rifts or Rift invasions. Rifts and Rift Invasions are likely to at random, expand within spaces in the spotlight. Finest neat and tidy entity is they're more often than not turn up above what your address is questing in Rift. You may invariably sign up while number before hand also on that point currently recently certainly present stopping it as begin the encounters your skin. This a lot of materials seep of expertise off easily wiping out opponents and also by producing the wrapping up while well as preventing the invasions.
Final Rifts and also feeling missions is as well a tremendous way to get products renovations. A novice in Rift may possibly not locate the significance of maintaining their outfits. It can be easy to on the net sweet spot those outfits. You may start taking note of these circumstance your nature receives extremely faster to be able to. Any individual issues soloing opponents within your respective aim make sure look into your stuff.
When that a number of the rules in that beginning golfers Rift ranking up guide always be heading with them a path plan. This is the time tasks associated web correlation ready so keep moving you in one area to the next. An index of Rift skill point gain areas is a smart idea to have round at any time you log off music as are definitely not guaranteed where to search next.
 
From the advertisements, we are able to research theirs propagate priority. The complete atmosphere is as following: the framing is situated within of tiffany stores the romantic island, using the intent of constructing an fast and at ease atmosphere. The type Anne Vyalisyna wears a apparel with flouncing and coach on sale different delicate fits walking for the trip. The visual appeal of gentle yellow, pale pink and gentle blue will make the complete assortment diffuse the inhale of youthful lady and pleasant mood; she appears like really graceful, easy-going and converse store livelier. LV bag 2011 is mainly developed using the gentle yellow, pale pink and gentle blue colors, the ads are filmed near to this theme color.
 
It is actually stimulating to determine the machine tattoosdirection they acquire impressive

as well as give a wholly leather shoes for men unique dimensions for you to building totes. Many

guys have a strong substantial right after regarding stalwarts for his or her unique libraries.


 
Sunglasses for ladies need to make typically sunglasses fashion the consumers have a look special along with fun-filled. And finally, it is essential that eyeglasses for girls have to have some specific attention. Whereas we say that in order to be well-known by way of people fashion eyeglasses from children which can prior person is truly expensive, drinking glasses for ladies can't wind up being unheard. Women desire fair pride, since are sometimes a very useful desire in general.

Around the, these three properties usually are my glasseseshop.com personal trivial understading about sunglasses for women.

 
Free WordPress Themes from templatedesk.com- Site Templates and CMS Themes.
 
Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?