<?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>T-SQL</title><link>http://sqlserver.ro/forums/15/ShowForum.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Re: mutare conditii de where in join; performant sau nu ?</title><link>http://sqlserver.ro/forums/thread/8964.aspx</link><pubDate>Mon, 10 Oct 2011 12:54:18 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:8964</guid><dc:creator>B_gd_n[ ]Sahlean</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/8964.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=8964</wfw:commentRss><description>Pentru joncțiuni INNER, un răspuns este oferit de &lt;a href="http://technet.microsoft.com/en-us/library/ms177634.aspx"&gt;Books Online&lt;/a&gt;:&lt;br&gt;"There can be predicates that involve only
 one of the joined tables in the ON clause. Such predicates also can be 
in the WHERE clause in the query. &lt;b&gt;Although the placement of such 
predicates does not make a difference for INNER joins&lt;/b&gt;, they might cause a
 different result when OUTER joins are involved. This is because the 
predicates in the ON clause are applied to the table before the join, 
whereas the WHERE clause is semantically applied to the result of the 
join.   &lt;span&gt;&lt;/span&gt;". Este posibil, totuși, ca BOL/MSDN să facă referire la rezultatele joncțiunii și nu la performanță.&lt;br&gt;&lt;br&gt;Pentru jocțiunile INNER se pot face următoarele teste care demonstrează că (în principiu) nu există nici un câștig/o penalizare (cel puțin în SQL Server 2008) dacă scriu condiția în WHERE sau în ON.&lt;br&gt;&lt;br&gt;Versiune SQL Server: 2008&lt;br&gt;Bază de date: &lt;a href="http://msftdbprodsamples.codeplex.com/"&gt;AdventureWorks2008&lt;/a&gt;&lt;br&gt;Interogări utilizate:&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;-- Test 1&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;PRINT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'***** Q1.1 *****'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Fuchsia;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;COUNT&lt;/span&gt;(h.AccountNumber)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderHeader h&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INNER&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;JOIN&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderDetail d &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ON&lt;/span&gt; h.SalesOrderID = d.SalesOrderID&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;&amp;nbsp;&amp;nbsp;d.SpecialOfferID = 2;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;PRINT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'***** Q1.2 *****'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Fuchsia;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;COUNT&lt;/span&gt;(h.AccountNumber)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderHeader h&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INNER&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;JOIN&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderDetail d &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ON&lt;/span&gt; h.SalesOrderID = d.SalesOrderID&lt;br&gt;&lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AND&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d.SpecialOfferID = 2;&lt;br&gt;&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;-- Test 2&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;PRINT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'***** Q2.1 *****'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Fuchsia;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;COUNT&lt;/span&gt;(*)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderHeader h&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INNER&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;JOIN&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderDetail d &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ON&lt;/span&gt; h.SalesOrderID = d.SalesOrderID&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;&amp;nbsp;&amp;nbsp;h.SalesPersonID = 277;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;PRINT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'***** Q2.2 *****'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Fuchsia;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;COUNT&lt;/span&gt;(*)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderHeader h&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INNER&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;JOIN&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderDetail d &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ON&lt;/span&gt; h.SalesOrderID = d.SalesOrderID&lt;br&gt;&lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AND&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h.SalesPersonID = 277;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;-- Test 3&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;PRINT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'***** Q3.1 *****'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Fuchsia;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;COUNT&lt;/span&gt;(*)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderHeader h&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INNER&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;JOIN&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderDetail d &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ON&lt;/span&gt; h.SalesOrderID = d.SalesOrderID&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;&amp;nbsp;&amp;nbsp;h.SalesPersonID = 277&lt;br&gt;&lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AND&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:Fuchsia;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;YEAR&lt;/span&gt;(h.OrderDate) = 2001;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;PRINT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'***** Q3.2 *****'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Fuchsia;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;COUNT&lt;/span&gt;(*)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderHeader h&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INNER&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;JOIN&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderDetail d &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ON&lt;/span&gt; h.SalesOrderID = d.SalesOrderID&lt;br&gt;&lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AND&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h.SalesPersonID = 277&lt;br&gt;&lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AND&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:Fuchsia;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;YEAR&lt;/span&gt;(h.OrderDate) = 2001;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;PRINT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'***** Q3.3 *****'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Fuchsia;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;COUNT&lt;/span&gt;(*)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderHeader h&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INNER&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;JOIN&lt;/span&gt;&amp;nbsp;&amp;nbsp;Sales.SalesOrderDetail d &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ON&lt;/span&gt; h.SalesOrderID = d.SalesOrderID&lt;br&gt;&lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AND&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h.SalesPersonID = 277&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Fuchsia;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;YEAR&lt;/span&gt;(h.OrderDate) = 2001;&lt;/span&gt;&lt;br&gt;&lt;br&gt;Rezultate SET STATISTICS IO (panoul "Messages"): identice &lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;/span&gt;Planurile de execuţie: identice&lt;br&gt;</description></item><item><title>Re: mutare conditii de where in join; performant sau nu ?</title><link>http://sqlserver.ro/forums/thread/8960.aspx</link><pubDate>Thu, 29 Sep 2011 11:11:48 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:8960</guid><dc:creator>tebbaerty</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/8960.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=8960</wfw:commentRss><description>Cred ca m-am lamurit.&lt;br /&gt;&lt;br /&gt;Acum ca am citit si http://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/ am inteles de fapt ca la executie se muta cum este mai convenabil filtrarea.</description></item><item><title>Re: mutare conditii de where in join; performant sau nu ?</title><link>http://sqlserver.ro/forums/thread/8959.aspx</link><pubDate>Thu, 29 Sep 2011 10:07:19 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:8959</guid><dc:creator>tebbaerty</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/8959.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=8959</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;Foloseste profiler-ul si vezi de exemplu numarul de "reads" in cele doua cazuri.&lt;br /&gt;Alte "good practices", de data asta pentru acuratetea rezultatelor, gasesti la nr. 6 din &lt;br /&gt;http://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br /&gt;&lt;br /&gt;am folosit set statistics io on iar rezultatele au fost aceleasi in ambele cazuri descrise de mine anterior :(.</description></item><item><title>Re: mutare conditii de where in join; performant sau nu ?</title><link>http://sqlserver.ro/forums/thread/8958.aspx</link><pubDate>Thu, 29 Sep 2011 10:02:07 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:8958</guid><dc:creator>tebbaerty</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/8958.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=8958</wfw:commentRss><description>Salut,&lt;br /&gt;&lt;br /&gt;Mersi pentru recomandare si explicarea ordinii.&lt;br /&gt;&lt;br /&gt;Nelamurirea mea era legata de plasarea conditiilor.&lt;br /&gt;Voi cauta in carte mai multe detalii dar ca si exermplu pragmatic ar fi vorba de :&lt;br /&gt;&lt;br /&gt;select&lt;br /&gt;*&lt;br /&gt;from Document&lt;br /&gt;inner join DocumentDetail on Document.DocumentId = DocumentDetail.DocumentId&lt;br /&gt;inner join InvoiceDetail on DocumentDetail.DocumentDetailId = InvoiceDetail.InvoiceDetailId&lt;br /&gt;where&lt;br /&gt;	Document.DocumentId = 1&lt;br /&gt;option(force order) -- pentru a nu fi reordonat querry-ul&lt;br /&gt;&lt;br /&gt;Aici s-ar face joinul dintre toate DocumentDetail cu InvoiceDetail ( pe conditia de on) si daca ar fi 100.000 atunci ar fi match-uite toate, dupa care se filtreaza cu conditia de where si din cele 100.000 se ia doar inregistrarea relevanta.&lt;br /&gt;&lt;br /&gt;select&lt;br /&gt;*&lt;br /&gt;from Document&lt;br /&gt;inner join DocumentDetail on Document.DocumentId = DocumentDetail.DocumentId and Document.DocumentId = 1&lt;br /&gt;inner join InvoiceDetail on DocumentDetail.DocumentDetailId = InvoiceDetail.InvoiceDetailId	&lt;br /&gt;option(force order) -- pentru a nu fi reordonat querry-ul&lt;br /&gt;&lt;br /&gt;Teoretic acum ar trebui sa se faca joinul dintre DocumentDetail si InvoiceDetail doar cu un match pe inregistrarea relevanta (dupa ce se aplica conditia de on dintre Document si DocumentDetail se foloseste inputul si se merge mai departe doar cu 1 inregistrare in loc de 100.000 cum ar fi fost in cazul anterior).&lt;br /&gt;&lt;br /&gt;Intrebarea este daca al 2-lea caz, intradevar va citi din InvoiceDetail doar 1 inregistrare in loc de 100.000&lt;br /&gt;&lt;br /&gt;Mersi,</description></item><item><title>Re: mutare conditii de where in join; performant sau nu ?</title><link>http://sqlserver.ro/forums/thread/8957.aspx</link><pubDate>Thu, 29 Sep 2011 09:47:25 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:8957</guid><dc:creator>Diana</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/8957.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=8957</wfw:commentRss><description>Foloseste profiler-ul si vezi de exemplu numarul de "reads" in cele doua cazuri.&lt;br /&gt;Alte "good practices", de data asta pentru acuratetea rezultatelor, gasesti la nr. 6 din &lt;br /&gt;http://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/&lt;br /&gt;</description></item><item><title>Re: mutare conditii de where in join; performant sau nu ?</title><link>http://sqlserver.ro/forums/thread/8956.aspx</link><pubDate>Thu, 29 Sep 2011 09:28:55 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:8956</guid><dc:creator>katalyn</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/8956.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=8956</wfw:commentRss><description>Iti recomand cartea "Inside Microsoft&amp;#174; SQL Server&amp;#174; 2008: T-SQL Querying" de Itzik Ben-Gan unde ordinea de executare a interogarilor este explicata detaliat.&lt;br /&gt;&lt;br /&gt;Ca idee ordinea este: &lt;br /&gt;FROM, JOIN, APPLY si ON : JOIN-urile sunt executate si aplicate primele filtre (ON)&lt;br /&gt;WHERE: Este aplicat al 2-lea set de filtre&lt;br /&gt;GROUP BY si functiile de agregare:	Se realizeaza gruparile si se calculeaza agregarile&lt;br /&gt;HAVING: Al 3-lea set de filtre este aplica (se aplica filtre si peste agregari)&lt;br /&gt;TOP: Ultima filtrare este aplicata. Se returneaza doar X randuri (inregistrari). TOP este executat inainte de ORDER BY&lt;br /&gt;UNION si SELECT: Rezultatele interogarilor sunt concatenate si sunt selectate coloanele returnate de interogarea finala&lt;br /&gt;ORDER BY: Se ordoneaza intregul set de date&lt;br /&gt;FOR XML: Rezultatul este convertit la formatul XML.&lt;br /&gt;&lt;br /&gt;http://www.amazon.com/Inside-Microsoft%C2%AE-Server%C2%AE-2008-Pro-Developer/dp/0735626022&lt;br /&gt;</description></item><item><title>mutare conditii de where in join; performant sau nu ?</title><link>http://sqlserver.ro/forums/thread/8955.aspx</link><pubDate>Thu, 29 Sep 2011 08:29:34 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:8955</guid><dc:creator>tebbaerty</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/8955.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=8955</wfw:commentRss><description>Salut,&lt;br /&gt;&lt;br /&gt;Corectati-ma daca gresesc dar ordinea de executie a componentelor unui statement este:&lt;br /&gt;FROM &lt;br /&gt;WHERE &lt;br /&gt;GROUP BY &lt;br /&gt;HAVING &lt;br /&gt;SELECT &lt;br /&gt;ORDER BY&lt;br /&gt;DISTINCT&lt;br /&gt;TOP&lt;br /&gt;&lt;br /&gt;In cele ce urmeaza ne intereseaza primele 2.&lt;br /&gt;&lt;br /&gt;Am auzit la multe persoane ca un best practice este sa muti din conditiile de where in conditiile de join (frecvent la cele cu inner join, la cele cu left join trebuie sa fii mai atent deoarece poti obtine un efect nedorit ) pentru ca mai intai se executa FROM si cu cat cu cat micsorezi mai mult datele cu atat mai putine readuri din page file-uri se fac.&lt;br /&gt;&lt;br /&gt;Cum as putea verifica, in mod pragmatic, ca acest lucru este adevarat ?&lt;br /&gt;Eu am impresia ca, teoretic conteaza si face sens, dar practic nu prea conteaza.&lt;br /&gt;&lt;br /&gt;Daca aveti vreun blog, vreun link, orice informatie este binevenita.&lt;br /&gt;&lt;br /&gt;Mersi,</description></item></channel></rss>