<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlserver.ro/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Intrebari generale</title><link>http://sqlserver.ro/forums/16/ShowForum.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Re: tabele temporare</title><link>http://sqlserver.ro/forums/thread/7372.aspx</link><pubDate>Tue, 07 Jul 2009 11:28:08 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:7372</guid><dc:creator>tebbaerty</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/7372.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=7372</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://sqlserver.ro/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Diana:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;*****&lt;br&gt;PRINT 'Duration with table variable: ' + CAST(DATEDIFF(ms, @StartTime, getdate()) as varchar(10)) + ' ms'
&lt;br&gt;*****&lt;br&gt;PRINT 'Duration with temp table: ' + CAST(DATEDIFF(ms, @StartTime, getdate()) as varchar(10)) + ' ms'
&lt;br&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Din cate stiu performanta nu are nici o legatura cu timpul de executie.&lt;br&gt;Timpul de executie depinde de pc pe care ruleaza.&lt;br&gt;&lt;br&gt;Performanta depinde de sec CPU si Reads pe care le vezi intr-un SQL profiler :D&lt;br&gt;&lt;br&gt;Nu ? &lt;br&gt;&lt;br&gt;Multumesc,&lt;br&gt;</description></item><item><title>Re: tabele temporare</title><link>http://sqlserver.ro/forums/thread/7371.aspx</link><pubDate>Tue, 07 Jul 2009 11:25:28 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:7371</guid><dc:creator>tebbaerty</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/7371.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=7371</wfw:commentRss><description>poi si ce folosim ? pentru proceduri apelate des&amp;nbsp; in care avem nevoie de tabele in care sa fie stocate cateva mii de randuri (10.000 50.000) ? &lt;br&gt;&lt;br&gt;&lt;br&gt;eu am facut urmatorul test:&lt;br&gt;&lt;br&gt;declare @t1 table&lt;br&gt;(a int,&lt;br&gt;b varchar(1000),&lt;br&gt;c datetime)&lt;br&gt;&lt;br&gt;declare @i int &lt;br&gt;set @i=0&lt;br&gt;&lt;br&gt;while @i &amp;lt; 1000000&lt;br&gt;begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert into @t1 (a,b,c) values (@i,'1234456757869879090-=qwerwerteruort[piolajksdgflkajsdhf,mzxbnc,v',getdate())&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set @i = @i + 1&lt;br&gt;end&lt;br&gt;&lt;br&gt;select * from @t1 where a&amp;lt;10000&lt;br&gt;&lt;br&gt;&lt;br&gt;unde&lt;br&gt;&lt;b&gt;CPU = 23775&lt;br&gt;Reads = 1097834&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;cel de al 2 :&lt;br&gt;&lt;br&gt;&lt;br&gt;create table #t1&lt;br&gt;(a int,&lt;br&gt;b varchar(1000),&lt;br&gt;c datetime)&lt;br&gt;&lt;br&gt;declare @i int &lt;br&gt;set @i=0&lt;br&gt;&lt;br&gt;while @i &amp;lt; 1000000&lt;br&gt;begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert into #t1 (a,b,c) values (@i,'1234456757869879090-=qwerwerteruort[piolajksdgflkajsdhf,mzxbnc,v',getdate())&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set @i = @i + 1&lt;br&gt;end&lt;br&gt;&lt;br&gt;create index ix on #t1 (a) &lt;br&gt;select * from #t1 where a&amp;lt;10000&lt;br&gt;drop table #t1&lt;br&gt;&lt;br&gt;unde&lt;br&gt;&lt;b&gt;CPU = 26816&lt;br&gt;
Reads = 1113503&lt;br&gt;&lt;br&gt;&lt;/b&gt;si fara index &lt;br&gt;&lt;br&gt;create table #t1&lt;br&gt;(a int,&lt;br&gt;b varchar(1000),&lt;br&gt;c datetime)&lt;br&gt;&lt;br&gt;declare @i int &lt;br&gt;set @i=0&lt;br&gt;&lt;br&gt;while @i &amp;lt; 1000000&lt;br&gt;begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert into #t1 (a,b,c) values (@i,'1234456757869879090-=qwerwerteruort[piolajksdgflkajsdhf,mzxbnc,v',getdate())&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set @i = @i + 1&lt;br&gt;end&lt;br&gt;&lt;br&gt;select * from #t1 where a&amp;lt;10000&lt;br&gt;drop table #t1&lt;br&gt;&lt;br&gt;&lt;b&gt;CPU = 25381&lt;br&gt;Reads = 1099355&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;Din ce arata testele se pare ca cel mai bun este @t1.&lt;br&gt;&lt;br&gt;Indexul poate ma ajuta la select , dar per total nu se observa diferenta , ba chiar mai mult ma ingreuneaza.&lt;br&gt;&lt;br&gt;&lt;font size="5"&gt;&lt;b&gt;Gresesc ceva ?&lt;/b&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Astept si parerile voastre legate de folosirea variabilei tabel si a tabelei temporare, care este cea mai buna pentru performanta in cazul in care procedura este apelata des si se folosesc inregistrari intre 1.000 si 10.000 ?&lt;br&gt;&lt;br&gt;La fiecare apel de procedura se creeaza tabela temporara se foloseste si se da drop .... &lt;br&gt;&lt;br&gt;Multumesc anticipat&lt;br&gt;&lt;br&gt;</description></item><item><title>Re: tabele temporare</title><link>http://sqlserver.ro/forums/thread/7358.aspx</link><pubDate>Sat, 27 Jun 2009 05:16:24 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:7358</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/7358.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=7358</wfw:commentRss><description>Recomandarea mea este să se evite folosirea tabelelor temporare &amp;#238;n proceduri care sunt apelate des (pentru că ar putea cauza recompilări) şi să se evite folosirea variabilelor de tip tabelă &amp;#238;n cazul &amp;#238;n care ar putea avea mai mult de c&amp;#226;teva sute de r&amp;#226;nduri (pentru că nu au distribution statistics).&lt;br /&gt;&lt;br /&gt;Răzvan</description></item><item><title>Re: tabele temporare</title><link>http://sqlserver.ro/forums/thread/7357.aspx</link><pubDate>Sat, 27 Jun 2009 05:05:41 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:7357</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/7357.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=7357</wfw:commentRss><description>Andrei,&lt;br /&gt;&lt;br /&gt;Nu este adevărat faptul că tabelele temporare sunt stocate doar pe disc, iar variabilele de tip tabelă doar &amp;#238;n memorie. Vezi &amp;#238;ntrebarea 4 din &lt;a href="http://support.microsoft.com/305977"&gt;KB 305977&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&amp;#206;n plus, recomand şi eu link-ul menţionat de Diana:&lt;br /&gt;&lt;a href="http://www.sqlservercentral.com/articles/Temporary+Tables/66720/"&gt;http://www.sqlservercentral.com/articles/Temporary+Tables/66720/&lt;/a&gt; (necesită &amp;#238;nregistrare gratuită)&lt;br /&gt;precum şi următoarele:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/sqlserverstorageengine/archive/2008/03/30/sql-server-table-variable-vs-local-temporary-table.aspx"&gt;http://blogs.msdn.com/sqlserverstorageengine/archive/2008/03/30/sql-server-table-variable-vs-local-temporary-table.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/sqlprogrammability/archive/2007/01/18/11-0-temporary-tables-table-variables-and-recompiles.aspx"&gt;http://blogs.msdn.com/sqlprogrammability/archive/2007/01/18/11-0-temporary-tables-table-variables-and-recompiles.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://databases.aspfaq.com/database/should-i-use-a-temp-table-or-a-table-variable.html"&gt;http://databases.aspfaq.com/database/should-i-use-a-temp-table-or-a-table-variable.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Răzvan</description></item><item><title>Re: tabele temporare</title><link>http://sqlserver.ro/forums/thread/7353.aspx</link><pubDate>Fri, 26 Jun 2009 11:49:28 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:7353</guid><dc:creator>Diana</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/7353.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=7353</wfw:commentRss><description>E bine sa verifici fiecare caz in parte.&lt;br /&gt;Daca, de exemplu, rulez scriptul de mai jos la mine (Vista Business 32 biti SP1, 4 CPU 2.8 Ghz, 2GB RAM, SQL 2008 dev SP1) obtin 1026 ms in cazul variabilei tabel si 596 ms in cazul tabelului temporar. Scriptul este propus de Gail Shaw (http://sqlinthewild.co.za/):&lt;br /&gt;Use AdventureWorks2008&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;-- Table variable&lt;br /&gt;&lt;br /&gt;SET NOCOUNT ON&lt;br /&gt;&lt;br /&gt;DECLARE @StartTime DATETIME&lt;br /&gt;&lt;br /&gt;DECLARE @LineItems TABLE (&lt;br /&gt;	SalesOrderID INT PRIMARY KEY,&lt;br /&gt;	ProductID INT, &lt;br /&gt;	Total NUMERIC(38,6)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;INSERT INTO @LineItems (SalesOrderID, ProductID, Total)&lt;br /&gt;SELECT SalesOrderDetailID, productid, LineTotal FROM Sales.SalesOrderDetail where ModifiedDate &gt; '2003-10-01 00:00:00.000'&lt;br /&gt;&lt;br /&gt;SET @StartTime = GETDATE()&lt;br /&gt;&lt;br /&gt;SELECT ProductNumber, SUM(Total)&lt;br /&gt;	FROM Production.Product p&lt;br /&gt;		INNER JOIN @LineItems Sales on p.ProductID = Sales.ProductID&lt;br /&gt;	GROUP BY ProductNumber&lt;br /&gt;&lt;br /&gt;PRINT 'Duration with table variable: ' + CAST(DATEDIFF(ms, @StartTime, getdate()) as varchar(10)) + ' ms'&lt;br /&gt;&lt;br /&gt;CREATE TABLE #LineItems (&lt;br /&gt;	SalesOrderID INT PRIMARY KEY,&lt;br /&gt;	ProductID INT, &lt;br /&gt;	Total NUMERIC(38,6)&lt;br /&gt;)&lt;br /&gt;INSERT INTO #LineItems (SalesOrderID, ProductID, Total)&lt;br /&gt;SELECT SalesOrderDetailID, productid, LineTotal FROM Sales.SalesOrderDetail where ModifiedDate &gt; '2003-10-01 00:00:00.000'&lt;br /&gt;&lt;br /&gt;SET @StartTime = GETDATE()&lt;br /&gt;&lt;br /&gt;SELECT ProductNumber, SUM(Total)&lt;br /&gt;	FROM Production.Product p&lt;br /&gt;		INNER JOIN #LineItems Sales on p.ProductID = Sales.ProductID&lt;br /&gt;	GROUP BY ProductNumber&lt;br /&gt;&lt;br /&gt;PRINT 'Duration with temp table: ' + CAST(DATEDIFF(ms, @StartTime, getdate()) as varchar(10)) + ' ms'&lt;br /&gt;	&lt;br /&gt;DROP TABLE #LineItems&lt;br /&gt;&lt;br /&gt;Este vorba cam de 65000 inregistrari.&lt;br /&gt;&lt;br /&gt;Vezi si http://www.sqlservercentral.com/articles/Temporary+Tables/66720/.</description></item><item><title>Re: tabele temporare</title><link>http://sqlserver.ro/forums/thread/7352.aspx</link><pubDate>Thu, 25 Jun 2009 14:18:07 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:7352</guid><dc:creator>ignatandrei</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/7352.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=7352</wfw:commentRss><description>Parere : avind in vedere ca tabelele temporare sunt in tempdb, iar variabilele sunt in memorie, inclin sa cred ca performante mai bune sunt la variabile.&lt;br&gt;dar ar trebui verificat ...&lt;br&gt;Totusi, dupa cite stiu, nu se pot folosi una in locul celeilalte (de pilda, dpdv tranzactional)&lt;br&gt;</description></item><item><title>tabele temporare</title><link>http://sqlserver.ro/forums/thread/7351.aspx</link><pubDate>Thu, 25 Jun 2009 12:58:12 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:7351</guid><dc:creator>MihaiBejenariu</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/7351.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=16&amp;PostID=7351</wfw:commentRss><description>As fi vrut sa-mi impartaseasca cineva experienta practica cu tabele temporare din punct de vedere al performantei.&lt;br&gt;Eu evit sa folosesc tabele temporare ori de cate ori este posibil. Este corect asa?&lt;br&gt;&lt;br&gt;De asemenea, nu sunt sigur cine ofera performante mai bune: tabelele temporare sau variabile de tip TABLE.&lt;br&gt;Ar fi utila si comparatia cu CTE.&lt;br&gt;&lt;br&gt;Stiu ca nu exista adevaruri universal valabile, dar as fi vrut sa identificam (din perspectiva practica) un fel de best practice pentru tabele temporare.&lt;br&gt;&lt;br&gt;</description></item></channel></rss>