<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Improving Performance by Using a Cartesian Join</title>
	<atom:link href="http://hoopercharles.wordpress.com/2010/03/18/improving-performance-by-using-a-cartesian-join/feed/" rel="self" type="application/rss+xml" />
	<link>http://hoopercharles.wordpress.com/2010/03/18/improving-performance-by-using-a-cartesian-join/</link>
	<description>Miscellaneous Random Oracle Topics: Stop, Think, ... Understand</description>
	<lastBuildDate>Mon, 13 May 2013 14:10:06 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Log Buffer #183, a Carnival of the Vanities for DBAs</title>
		<link>http://hoopercharles.wordpress.com/2010/03/18/improving-performance-by-using-a-cartesian-join/#comment-5252</link>
		<dc:creator><![CDATA[Log Buffer #183, a Carnival of the Vanities for DBAs]]></dc:creator>
		<pubDate>Wed, 13 Feb 2013 16:37:05 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=1748#comment-5252</guid>
		<description><![CDATA[[...] on your own) that leaving out where clauses is a bad thing. Well, leave it to Charles Hooper on his Oracle Notes to prove to us that sometimes, they are actually more efficient for solving certain types of [...]]]></description>
		<content:encoded><![CDATA[<p>[...] on your own) that leaving out where clauses is a bad thing. Well, leave it to Charles Hooper on his Oracle Notes to prove to us that sometimes, they are actually more efficient for solving certain types of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Use SQL to Create a Calendar in Mutliple Languages &#187; Eddie Awad&#039;s Blog</title>
		<link>http://hoopercharles.wordpress.com/2010/03/18/improving-performance-by-using-a-cartesian-join/#comment-4600</link>
		<dc:creator><![CDATA[Use SQL to Create a Calendar in Mutliple Languages &#187; Eddie Awad&#039;s Blog]]></dc:creator>
		<pubDate>Mon, 02 Apr 2012 16:16:30 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=1748#comment-4600</guid>
		<description><![CDATA[[...] Charles Hooper [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Charles Hooper [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charles Hooper</title>
		<link>http://hoopercharles.wordpress.com/2010/03/18/improving-performance-by-using-a-cartesian-join/#comment-530</link>
		<dc:creator><![CDATA[Charles Hooper]]></dc:creator>
		<pubDate>Fri, 19 Mar 2010 02:47:05 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=1748#comment-530</guid>
		<description><![CDATA[Hi Roger,

Thanks for stopping by and sharing a link to your presentation.

Yes, there are valid uses for Cartesian products - they are rare.  In this example I used one to efficiently find all possible combinations of two row sources.

Other ways Cartesian joins may appear, even if the developer has written the SQL statement correctly:
* The query optimizer using transitive closure to generate additional predicates, and in the process the optimizer automatically removed the join condition between those two tables.  Example 1 from the &lt;a href=&quot;http://books.google.com/books?id=TGSd3pkMx5IC&amp;pg=PA141&quot; rel=&quot;nofollow&quot;&gt;Cost-Based Oracle Fundamentals book&lt;/a&gt;   Example 2 from &lt;a href=&quot;http://jonathanlewis.wordpress.com/2006/12/13/cartesian-merge-join/&quot; rel=&quot;nofollow&quot;&gt;that author&#039;s website&lt;/a&gt;.
* The optimizer incorrectly calculates the row source cardinality of at least one of the row sources as a very small number, such as 1, and determines that a Cartesian join between two possibly unrelated row sources is safe and efficient.  Randolf Geist and I included an example of this behavior in &lt;a href=&quot;http://books.google.com/books?id=xzjw4hoeDegC&amp;pg=PA309&quot; rel=&quot;nofollow&quot;&gt;chapter 9 of the Expert Oracle Practices book&lt;/a&gt;.  In this case, all of the correct join conditions were provided in the query.

I am not sure that I would classify your #3 and #4 items as something that would necessarily cause a Cartesian join.  I think that those examples could be considered a legitimate 1 to many type join.  This, of course, is just my opinion, and I could be completely wrong.

One more use for Cartesian joins: stress testing the server admins or the database admins.  :-)]]></description>
		<content:encoded><![CDATA[<p>Hi Roger,</p>
<p>Thanks for stopping by and sharing a link to your presentation.</p>
<p>Yes, there are valid uses for Cartesian products &#8211; they are rare.  In this example I used one to efficiently find all possible combinations of two row sources.</p>
<p>Other ways Cartesian joins may appear, even if the developer has written the SQL statement correctly:<br />
* The query optimizer using transitive closure to generate additional predicates, and in the process the optimizer automatically removed the join condition between those two tables.  Example 1 from the <a href="http://books.google.com/books?id=TGSd3pkMx5IC&amp;pg=PA141" rel="nofollow">Cost-Based Oracle Fundamentals book</a>   Example 2 from <a href="http://jonathanlewis.wordpress.com/2006/12/13/cartesian-merge-join/" rel="nofollow">that author&#8217;s website</a>.<br />
* The optimizer incorrectly calculates the row source cardinality of at least one of the row sources as a very small number, such as 1, and determines that a Cartesian join between two possibly unrelated row sources is safe and efficient.  Randolf Geist and I included an example of this behavior in <a href="http://books.google.com/books?id=xzjw4hoeDegC&amp;pg=PA309" rel="nofollow">chapter 9 of the Expert Oracle Practices book</a>.  In this case, all of the correct join conditions were provided in the query.</p>
<p>I am not sure that I would classify your #3 and #4 items as something that would necessarily cause a Cartesian join.  I think that those examples could be considered a legitimate 1 to many type join.  This, of course, is just my opinion, and I could be completely wrong.</p>
<p>One more use for Cartesian joins: stress testing the server admins or the database admins.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rodger Lepinsky</title>
		<link>http://hoopercharles.wordpress.com/2010/03/18/improving-performance-by-using-a-cartesian-join/#comment-529</link>
		<dc:creator><![CDATA[Rodger Lepinsky]]></dc:creator>
		<pubDate>Fri, 19 Mar 2010 01:13:16 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=1748#comment-529</guid>
		<description><![CDATA[Hmm.  So there are some uses for cartesian products!

I kept finding them in queries over the years.  They were very slow to finish, produced way too many rows, and strange, inaccurate results. 

What was odd was that while it was blantantly obvious to me, my coworkers didn&#039;t see it as a cartesian product.  They kept barking up the statistics
and index trees.  But actually, those can&#039;t speed them up at all.  

So, I made a presentation on cartesian products, and presented it at the Oracle User&#039;s Group.  See it here:
www.lepinsky.com/cartesian/index.htm

It lists five ways to get CP in queries.   If you know of any more, please let me know.  

The only two real uses that I came up with for CP were 
- inserting more test dummy data quickly using rownum
- stress testing your servers]]></description>
		<content:encoded><![CDATA[<p>Hmm.  So there are some uses for cartesian products!</p>
<p>I kept finding them in queries over the years.  They were very slow to finish, produced way too many rows, and strange, inaccurate results. </p>
<p>What was odd was that while it was blantantly obvious to me, my coworkers didn&#8217;t see it as a cartesian product.  They kept barking up the statistics<br />
and index trees.  But actually, those can&#8217;t speed them up at all.  </p>
<p>So, I made a presentation on cartesian products, and presented it at the Oracle User&#8217;s Group.  See it here:<br />
<a href="http://www.lepinsky.com/cartesian/index.htm" rel="nofollow">http://www.lepinsky.com/cartesian/index.htm</a></p>
<p>It lists five ways to get CP in queries.   If you know of any more, please let me know.  </p>
<p>The only two real uses that I came up with for CP were<br />
- inserting more test dummy data quickly using rownum<br />
- stress testing your servers</p>
]]></content:encoded>
	</item>
</channel>
</rss>
