<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comments on: Joins without JOIN	</title>
	<atom:link href="https://lobsterpot.com.au/blog/2011/10/04/joins-without-join/feed/" rel="self" type="application/rss+xml" />
	<link>https://lobsterpot.com.au/blog/2011/10/04/joins-without-join/</link>
	<description></description>
	<lastBuildDate>Fri, 10 Jun 2016 20:27:09 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>
	<item>
		<title>
		By: Chirag		</title>
		<link>https://lobsterpot.com.au/blog/2011/10/04/joins-without-join/#comment-1994</link>

		<dc:creator><![CDATA[Chirag]]></dc:creator>
		<pubDate>Fri, 10 Jun 2016 20:27:09 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.lobsterpot.com.au/?p=3014#comment-1994</guid>

					<description><![CDATA[Hi Rob,
Nice work , just loved your article. Your post give so much clarity to the topic/concepts.
thanks for posting. &#160;]]></description>
			<content:encoded><![CDATA[<p>Hi Rob,<br />
Nice work , just loved your article. Your post give so much clarity to the topic/concepts.<br />
thanks for posting. &nbsp;</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Kawahee		</title>
		<link>https://lobsterpot.com.au/blog/2011/10/04/joins-without-join/#comment-1993</link>

		<dc:creator><![CDATA[Kawahee]]></dc:creator>
		<pubDate>Sun, 09 Oct 2011 10:06:12 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.lobsterpot.com.au/?p=3014#comment-1993</guid>

					<description><![CDATA[Just an update, I looked at the query plans myself and they seem to be equivalent in performance - both had the same number of (re)binds. I added a few more predicates to the WHERE and ON clauses to try and get the query optimizer to revert to rebinding for each record but both plans had the same number of rebinds.
The LEFT JOIN was actually slower, by a small margin, once I&#039;d added the extra predicates.
I also changed the last query from SELECT * to SELECT s.*, since it&#039;s only fair we ask for the same data each time.
I&#039;m going to keep looking at this.]]></description>
			<content:encoded><![CDATA[<p>Just an update, I looked at the query plans myself and they seem to be equivalent in performance &#8211; both had the same number of (re)binds. I added a few more predicates to the WHERE and ON clauses to try and get the query optimizer to revert to rebinding for each record but both plans had the same number of rebinds.<br />
The LEFT JOIN was actually slower, by a small margin, once I&#8217;d added the extra predicates.<br />
I also changed the last query from SELECT * to SELECT s.*, since it&#8217;s only fair we ask for the same data each time.<br />
I&#8217;m going to keep looking at this.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Kawahee		</title>
		<link>https://lobsterpot.com.au/blog/2011/10/04/joins-without-join/#comment-1992</link>

		<dc:creator><![CDATA[Kawahee]]></dc:creator>
		<pubDate>Sun, 09 Oct 2011 07:54:09 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.lobsterpot.com.au/?p=3014#comment-1992</guid>

					<description><![CDATA[What is the number of rebinds on the operators at the bottom of the &#160;NOT EXISTS plan? If there is rebinding then it will be slower than the LEFT JOIN, which should bind to the table once.
Correlated subqueries are bad for performance because of rebinds, no?]]></description>
			<content:encoded><![CDATA[<p>What is the number of rebinds on the operators at the bottom of the &nbsp;NOT EXISTS plan? If there is rebinding then it will be slower than the LEFT JOIN, which should bind to the table once.<br />
Correlated subqueries are bad for performance because of rebinds, no?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Rob Farley		</title>
		<link>https://lobsterpot.com.au/blog/2011/10/04/joins-without-join/#comment-1991</link>

		<dc:creator><![CDATA[Rob Farley]]></dc:creator>
		<pubDate>Wed, 05 Oct 2011 08:23:24 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.lobsterpot.com.au/?p=3014#comment-1991</guid>

					<description><![CDATA[Hi Todd,
EXISTS isn&#039;t actually an Inner Join, it&#039;s a Semi Join. Slight difference... an Inner Join will project rows onto each match. A Semi Join simply filters based on existence.
Hope this helps...
Rob]]></description>
			<content:encoded><![CDATA[<p>Hi Todd,<br />
EXISTS isn&#8217;t actually an Inner Join, it&#8217;s a Semi Join. Slight difference&#8230; an Inner Join will project rows onto each match. A Semi Join simply filters based on existence.<br />
Hope this helps&#8230;<br />
Rob</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Brad Schulz		</title>
		<link>https://lobsterpot.com.au/blog/2011/10/04/joins-without-join/#comment-1990</link>

		<dc:creator><![CDATA[Brad Schulz]]></dc:creator>
		<pubDate>Wed, 05 Oct 2011 04:10:10 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.lobsterpot.com.au/?p=3014#comment-1990</guid>

					<description><![CDATA[I love that we both touched on the OUTER + IS NULL inefficiency. :)
&lt;a href=&quot;http://bradsruminations.blogspot.com/2011/10/t-sql-tuesday-023-flip-side-of-join.html&quot; rel=&quot;nofollow ugc&quot;&gt;http://bradsruminations.blogspot.com/2011/10/t-sql-tuesday-023-flip-side-of-join.html&lt;/a&gt;
--Brad]]></description>
			<content:encoded><![CDATA[<p>I love that we both touched on the OUTER + IS NULL inefficiency. 🙂<br />
<a href="http://bradsruminations.blogspot.com/2011/10/t-sql-tuesday-023-flip-side-of-join.html" rel="nofollow ugc">http://bradsruminations.blogspot.com/2011/10/t-sql-tuesday-023-flip-side-of-join.html</a><br />
&#8211;Brad</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Todd Everett		</title>
		<link>https://lobsterpot.com.au/blog/2011/10/04/joins-without-join/#comment-1989</link>

		<dc:creator><![CDATA[Todd Everett]]></dc:creator>
		<pubDate>Tue, 04 Oct 2011 15:26:52 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.lobsterpot.com.au/?p=3014#comment-1989</guid>

					<description><![CDATA[Thanks for this post Rob. &#160;I&#039;ve always wondered what those anti joins were. &#160;Coming from a background of always using correlated EXISTS and NOT EXISTS I had only recently realized EXISTS is just INNER JOIN. &#160;I never made the leap that NOT EXISTS is of course outer join with a WHERE filter so thank you for showing that. &#160;Where I work folks like EXISTS and NOT EXISTS because it makes it clear what you are doing logically where writing as a join makes that a little more ambiguous. &#160;I was just recently tending to use the inner join instead of EXISTS as I thought it performed better. &#160;Now I see that may not be the case. &#160;Thanks for rounding out my understanding of this topic!]]></description>
			<content:encoded><![CDATA[<p>Thanks for this post Rob. &nbsp;I&#8217;ve always wondered what those anti joins were. &nbsp;Coming from a background of always using correlated EXISTS and NOT EXISTS I had only recently realized EXISTS is just INNER JOIN. &nbsp;I never made the leap that NOT EXISTS is of course outer join with a WHERE filter so thank you for showing that. &nbsp;Where I work folks like EXISTS and NOT EXISTS because it makes it clear what you are doing logically where writing as a join makes that a little more ambiguous. &nbsp;I was just recently tending to use the inner join instead of EXISTS as I thought it performed better. &nbsp;Now I see that may not be the case. &nbsp;Thanks for rounding out my understanding of this topic!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Rob Farley		</title>
		<link>https://lobsterpot.com.au/blog/2011/10/04/joins-without-join/#comment-1988</link>

		<dc:creator><![CDATA[Rob Farley]]></dc:creator>
		<pubDate>Tue, 04 Oct 2011 14:24:19 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.lobsterpot.com.au/?p=3014#comment-1988</guid>

					<description><![CDATA[Indeed it can. I figured it wasn&#039;t necessary to show it though, as I discussed APPLY plenty in a previous post.]]></description>
			<content:encoded><![CDATA[<p>Indeed it can. I figured it wasn&#8217;t necessary to show it though, as I discussed APPLY plenty in a previous post.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: vijay kashyap		</title>
		<link>https://lobsterpot.com.au/blog/2011/10/04/joins-without-join/#comment-1987</link>

		<dc:creator><![CDATA[vijay kashyap]]></dc:creator>
		<pubDate>Tue, 04 Oct 2011 13:53:54 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.lobsterpot.com.au/?p=3014#comment-1987</guid>

					<description><![CDATA[outer apply can be used for this below code
SELECT * 
 &#160; &#160;, (SELECT COUNT(*) FROM Production.Product AS p 
 &#160; &#160; &#160; WHERE p.ProductSubcategoryID = s.ProductSubcategoryID) AS ProdCount 
FROM Production.ProductSubcategory AS s;]]></description>
			<content:encoded><![CDATA[<p>outer apply can be used for this below code<br />
SELECT *<br />
 &nbsp; &nbsp;, (SELECT COUNT(*) FROM Production.Product AS p<br />
 &nbsp; &nbsp; &nbsp; WHERE p.ProductSubcategoryID = s.ProductSubcategoryID) AS ProdCount<br />
FROM Production.ProductSubcategory AS s;</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
