<?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: Indexing LINQ</title>
	<atom:link href="http://blog.lab49.com/archives/1031/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.lab49.com/archives/1031</link>
	<description>Technology and industry insights from Lab49.</description>
	<lastBuildDate>Sat, 24 Sep 2011 08:33:50 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Damien Morton</title>
		<link>http://blog.lab49.com/archives/1031/comment-page-1#comment-58590</link>
		<dc:creator>Damien Morton</dc:creator>
		<pubDate>Thu, 31 May 2007 22:50:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.lab49.com/?p=1031#comment-58590</guid>
		<description>Hi Matt,

Are the indexes are rebuilt each time the query is executed?</description>
		<content:encoded><![CDATA[<p>Hi Matt,</p>
<p>Are the indexes are rebuilt each time the query is executed?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Warren</title>
		<link>http://blog.lab49.com/archives/1031/comment-page-1#comment-58492</link>
		<dc:creator>Matt Warren</dc:creator>
		<pubDate>Thu, 31 May 2007 15:40:20 +0000</pubDate>
		<guid isPermaLink="false">http://blog.lab49.com/?p=1031#comment-58492</guid>
		<description>Actually the &#039;join&#039; syntax was designed explicitly not to convert into nested loops. You can do that if you want by using multiple &#039;from&#039; clauses.  However, the &#039;join&#039; syntax actually maps to the Join() query operator that builds an index over the second sequence and uses the first sequence to probe into the index. Which is a whole lot faster than nested loops in most cases.</description>
		<content:encoded><![CDATA[<p>Actually the &#8216;join&#8217; syntax was designed explicitly not to convert into nested loops. You can do that if you want by using multiple &#8216;from&#8217; clauses.  However, the &#8216;join&#8217; syntax actually maps to the Join() query operator that builds an index over the second sequence and uses the first sequence to probe into the index. Which is a whole lot faster than nested loops in most cases.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kalani Thielen</title>
		<link>http://blog.lab49.com/archives/1031/comment-page-1#comment-57191</link>
		<dc:creator>Kalani Thielen</dc:creator>
		<pubDate>Sun, 27 May 2007 17:22:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.lab49.com/?p=1031#comment-57191</guid>
		<description>They can probably deal with this in a straightforward way by passing the restriction (with values substituted from the outer relation) to the inner relation for each record in the outer relation.  The &#039;back-end&#039; can possibly provide a more efficient iterator; otherwise you&#039;d fall back to searching the cartesian-product.

You wouldn&#039;t get most-efficient ordering that way (if the inner relation is smaller than the outer relation, it&#039;d be better to quantify on the inner one), but you&#039;d at least optimally have O(n log m) time, rather than O(n m).

And it would still look like a nested loop, which reasonably explains what it&#039;s really doing in a join.</description>
		<content:encoded><![CDATA[<p>They can probably deal with this in a straightforward way by passing the restriction (with values substituted from the outer relation) to the inner relation for each record in the outer relation.  The &#8216;back-end&#8217; can possibly provide a more efficient iterator; otherwise you&#8217;d fall back to searching the cartesian-product.</p>
<p>You wouldn&#8217;t get most-efficient ordering that way (if the inner relation is smaller than the outer relation, it&#8217;d be better to quantify on the inner one), but you&#8217;d at least optimally have O(n log m) time, rather than O(n m).</p>
<p>And it would still look like a nested loop, which reasonably explains what it&#8217;s really doing in a join.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

