<?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: Nested Loops Join &#8211; the Smaller Table is the Driving Table, the Larger Table is the Driving Table</title>
	<atom:link href="http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/feed/" rel="self" type="application/rss+xml" />
	<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/</link>
	<description>Miscellaneous Random Oracle Topics: Stop, Think, ... Understand</description>
	<lastBuildDate>Thu, 23 May 2013 04:02:42 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Charles Hooper</title>
		<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/#comment-3008</link>
		<dc:creator><![CDATA[Charles Hooper]]></dc:creator>
		<pubDate>Sat, 26 Mar 2011 02:32:33 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=4674#comment-3008</guid>
		<description><![CDATA[Donatello,

Nice demonstrations.

I was suffering from a bit of a mental block a couple of days ago when trying to visualize what the clustering factor should be for the ascending and descending sequence of numbers.  I am still a little upset with myself about the second to the last paragraph in this article.  Fortunately, people like you, Dom Brooks, and Narendra stepped up to identify the logic flaw in my reasoning.]]></description>
		<content:encoded><![CDATA[<p>Donatello,</p>
<p>Nice demonstrations.</p>
<p>I was suffering from a bit of a mental block a couple of days ago when trying to visualize what the clustering factor should be for the ascending and descending sequence of numbers.  I am still a little upset with myself about the second to the last paragraph in this article.  Fortunately, people like you, Dom Brooks, and Narendra stepped up to identify the logic flaw in my reasoning.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pavan Kumar N</title>
		<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/#comment-3004</link>
		<dc:creator><![CDATA[Pavan Kumar N]]></dc:creator>
		<pubDate>Fri, 25 Mar 2011 19:03:56 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=4674#comment-3004</guid>
		<description><![CDATA[Hi  Donatello Settembrino,

That&#039;s a pretty good demonstration of clustering factor. Lession learnt for me too..
After going through the test case, I just check across the trace file, while collecting statistics and finally came to information which you stated across. Thanks for sharing across and even Jonathan posted across the information quite long before

http://www.jlcomp.demon.co.uk/index_efficiency.html]]></description>
		<content:encoded><![CDATA[<p>Hi  Donatello Settembrino,</p>
<p>That&#8217;s a pretty good demonstration of clustering factor. Lession learnt for me too..<br />
After going through the test case, I just check across the trace file, while collecting statistics and finally came to information which you stated across. Thanks for sharing across and even Jonathan posted across the information quite long before</p>
<p><a href="http://www.jlcomp.demon.co.uk/index_efficiency.html" rel="nofollow">http://www.jlcomp.demon.co.uk/index_efficiency.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Narendra</title>
		<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/#comment-3000</link>
		<dc:creator><![CDATA[Narendra]]></dc:creator>
		<pubDate>Fri, 25 Mar 2011 17:39:38 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=4674#comment-3000</guid>
		<description><![CDATA[Donatello,

That is awesome. Did not know that. Thanks.]]></description>
		<content:encoded><![CDATA[<p>Donatello,</p>
<p>That is awesome. Did not know that. Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Donatello Settembrino</title>
		<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/#comment-2997</link>
		<dc:creator><![CDATA[Donatello Settembrino]]></dc:creator>
		<pubDate>Fri, 25 Mar 2011 16:05:37 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=4674#comment-2997</guid>
		<description><![CDATA[Hi Charles,
first of all congratulations, great test case.
From test case like this, it always comes out with some more knowledge.
Read the title of this post and the first to observe your test
I replied:

&quot;I could not give a dry answer, depends on the case and the variables in play&quot;
(I think that this statement is almost always)

But honestly I would not have immediately thought of all the possible combinations.

With regard to the clustering factor, re-running your test, I get
the following result:

[code]

SQL&gt; select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE    11.2.0.2.0      Production
TNS for IBM/AIX RISC System/6000: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production


SQL&gt; SELECT a.table_name,
  2         a.index_name,
  3         a.clustering_factor,
  4         a.num_rows,
  5         b.BLOCKS as table_blocks
  6  FROM  user_indexes a
  7  join  user_tables  b
  8  on    a.TABLE_NAME = b.TABLE_NAME
  9  where a.TABLE_NAME = &#039;T1&#039;
 10  ORDER BY a.TABLE_NAME,
 11           a.INDEX_NAME;

TABLE_NAME  INDEX_NAME  CLUSTERING_FACTOR NUM_ROWS   TABLE_BLOCKS
----------- ----------- ----------------- ---------- ------------
T1          IND_T1_C1   15873             1000000    16267
T1          IND_T1_C2   15873             1000000    16267

[/code]

I was not surprised by the value of the clustering factor on the columns c1
and c2.

The definition I give to the clustering factor is as follows:

&quot;represents the adjacent index keys
not point to the same data block. &quot;

In your case can not be different .. can not


Narendra,


If I remember correctly, Oracle, calculate the clustering factor 
using the function(undocumented) sys_op_countchg.
If I remember correctly, I read this thing on the book by 
J. Lewis or somewhere else.

In the case of the index, the table T1 in the test of Charles:

[code]

SQL&gt; select /*+ cursor_sharing_exact
  2        dynamic_sampling(0)
  3        no_monitoring
  4        no_expand
  5        index(t1,&quot;IND_T1_C1&quot;)
  6        noparallel_index(t1,&quot;IND_T1_C1&quot;) */
  7     sys_op_countchg(substrb(t1.rowid,1,15),1) as clustering_factor
  8     from t1 ;

CLUSTERING_FACTOR
-----------------
            15873

[/code]


In the case of your example (with duplicate values)

[code]

SQL&gt; CREATE TABLE T2 (
  2    C1 NUMBER,
  3    C2 NUMBER);

SQL&gt; INSERT INTO
  2  T2
  3  SELECT C1, C2 FROM (
  4  SELECT
  5  MOD(ROWNUM,1000) C1,
  6  1000 - MOD(ROWNUM,1000) C2
  7  FROM
  8  DUAL
  9  CONNECT BY
 10  LEVEL&lt;=100000)
 11  ORDER BY C1;

SQL&gt; commit;


SQL&gt; CREATE INDEX IND_T2_C1 ON T2(C1);

SQL&gt; CREATE INDEX IND_T2_C2 ON T2(C2);

SQL&gt; EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=&gt;USER,TABNAME=&gt;&#039;T2&#039;,CASCADE=&gt;TRUE,ESTIMATE_PERCENT=&gt;NULL)


SQL&gt; SELECT a.table_name,
  2         a.index_name,
  3         a.clustering_factor,
  4         a.num_rows,
  5         b.BLOCKS as table_blocks
  6  FROM  user_indexes a
  7  join  user_tables  b
  8  on    a.TABLE_NAME = b.TABLE_NAME
  9  where a.TABLE_NAME = &#039;T2&#039;
 10  ORDER BY a.TABLE_NAME,
 11           a.INDEX_NAME;

TABLE_NAME  INDEX_NAME   CLUSTERING_FACTOR NUM_ROWS   TABLE_BLOCKS
----------- ------------ ----------------- ---------- ------------
T2          IND_T2_C1    122               100000     121
T2          IND_T2_C2    228               100000     121

[/code]


how is it calculated?

Reflecting on the definition of clustering factor that I gave earlier:


&quot;How many adjacent index keys
not point to the same data block. &quot;


So, if I think the definition of the clustering factor, I can imagine that Oracle does something like this:


1) for column c1 of table t2

[code]

SQL&gt; select count(*) clusf
  2  from (
  3  with dist_key_blk as (
  4             select distinct c1
  5             , dbms_rowid.rowid_block_number(rowid) as current_blk
  6             , lead(dbms_rowid.rowid_block_number(rowid), 1, 99999999) over (ORDER BY c1) as next_blk
  7             from t2
  8             order by 1, 2
  9  )
 10  select c1
 11       , current_blk
 12       , next_blk
 13  from dist_key_blk
 14  where current_blk &lt;&gt; next_blk
 15  )
 16  ;

     CLUSF
----------
       122

[/code]


2) for column c2 of table t2 

[code]

SQL&gt; select count(*) clusf
  2  from (
  3  with dist_key_blk as (
  4             select distinct c2
  5             , dbms_rowid.rowid_block_number(rowid) as current_blk
  6             , lead(dbms_rowid.rowid_block_number(rowid), 1, 99999999) over (ORDER BY c2) as next_blk
  7             from t2
  8             order by 1, 2
  9  )
 10  select c2
 11       , current_blk
 12       , next_blk
 13  from dist_key_blk
 14  where current_blk &lt;&gt; next_blk
 15  );

     CLUSF
----------
       228

[/code]


Obviously, the query is only the fruit of my imagination, how it should work according to the definition ...
I did not say which is right, but I think it&#039;s pretty close ...

HTH

Donatello Settembrino]]></description>
		<content:encoded><![CDATA[<p>Hi Charles,<br />
first of all congratulations, great test case.<br />
From test case like this, it always comes out with some more knowledge.<br />
Read the title of this post and the first to observe your test<br />
I replied:</p>
<p>&#8220;I could not give a dry answer, depends on the case and the variables in play&#8221;<br />
(I think that this statement is almost always)</p>
<p>But honestly I would not have immediately thought of all the possible combinations.</p>
<p>With regard to the clustering factor, re-running your test, I get<br />
the following result:</p>
<pre class="brush: plain; title: ; notranslate">

SQL&gt; select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE    11.2.0.2.0      Production
TNS for IBM/AIX RISC System/6000: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production


SQL&gt; SELECT a.table_name,
  2         a.index_name,
  3         a.clustering_factor,
  4         a.num_rows,
  5         b.BLOCKS as table_blocks
  6  FROM  user_indexes a
  7  join  user_tables  b
  8  on    a.TABLE_NAME = b.TABLE_NAME
  9  where a.TABLE_NAME = 'T1'
 10  ORDER BY a.TABLE_NAME,
 11           a.INDEX_NAME;

TABLE_NAME  INDEX_NAME  CLUSTERING_FACTOR NUM_ROWS   TABLE_BLOCKS
----------- ----------- ----------------- ---------- ------------
T1          IND_T1_C1   15873             1000000    16267
T1          IND_T1_C2   15873             1000000    16267

</pre>
<p>I was not surprised by the value of the clustering factor on the columns c1<br />
and c2.</p>
<p>The definition I give to the clustering factor is as follows:</p>
<p>&#8220;represents the adjacent index keys<br />
not point to the same data block. &#8221;</p>
<p>In your case can not be different .. can not</p>
<p>Narendra,</p>
<p>If I remember correctly, Oracle, calculate the clustering factor<br />
using the function(undocumented) sys_op_countchg.<br />
If I remember correctly, I read this thing on the book by<br />
J. Lewis or somewhere else.</p>
<p>In the case of the index, the table T1 in the test of Charles:</p>
<pre class="brush: plain; title: ; notranslate">

SQL&gt; select /*+ cursor_sharing_exact
  2        dynamic_sampling(0)
  3        no_monitoring
  4        no_expand
  5        index(t1,&quot;IND_T1_C1&quot;)
  6        noparallel_index(t1,&quot;IND_T1_C1&quot;) */
  7     sys_op_countchg(substrb(t1.rowid,1,15),1) as clustering_factor
  8     from t1 ;

CLUSTERING_FACTOR
-----------------
            15873

</pre>
<p>In the case of your example (with duplicate values)</p>
<pre class="brush: plain; title: ; notranslate">

SQL&gt; CREATE TABLE T2 (
  2    C1 NUMBER,
  3    C2 NUMBER);

SQL&gt; INSERT INTO
  2  T2
  3  SELECT C1, C2 FROM (
  4  SELECT
  5  MOD(ROWNUM,1000) C1,
  6  1000 - MOD(ROWNUM,1000) C2
  7  FROM
  8  DUAL
  9  CONNECT BY
 10  LEVEL&lt;=100000)
 11  ORDER BY C1;

SQL&gt; commit;


SQL&gt; CREATE INDEX IND_T2_C1 ON T2(C1);

SQL&gt; CREATE INDEX IND_T2_C2 ON T2(C2);

SQL&gt; EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=&gt;USER,TABNAME=&gt;'T2',CASCADE=&gt;TRUE,ESTIMATE_PERCENT=&gt;NULL)


SQL&gt; SELECT a.table_name,
  2         a.index_name,
  3         a.clustering_factor,
  4         a.num_rows,
  5         b.BLOCKS as table_blocks
  6  FROM  user_indexes a
  7  join  user_tables  b
  8  on    a.TABLE_NAME = b.TABLE_NAME
  9  where a.TABLE_NAME = 'T2'
 10  ORDER BY a.TABLE_NAME,
 11           a.INDEX_NAME;

TABLE_NAME  INDEX_NAME   CLUSTERING_FACTOR NUM_ROWS   TABLE_BLOCKS
----------- ------------ ----------------- ---------- ------------
T2          IND_T2_C1    122               100000     121
T2          IND_T2_C2    228               100000     121

</pre>
<p>how is it calculated?</p>
<p>Reflecting on the definition of clustering factor that I gave earlier:</p>
<p>&#8220;How many adjacent index keys<br />
not point to the same data block. &#8221;</p>
<p>So, if I think the definition of the clustering factor, I can imagine that Oracle does something like this:</p>
<p>1) for column c1 of table t2</p>
<pre class="brush: plain; title: ; notranslate">

SQL&gt; select count(*) clusf
  2  from (
  3  with dist_key_blk as (
  4             select distinct c1
  5             , dbms_rowid.rowid_block_number(rowid) as current_blk
  6             , lead(dbms_rowid.rowid_block_number(rowid), 1, 99999999) over (ORDER BY c1) as next_blk
  7             from t2
  8             order by 1, 2
  9  )
 10  select c1
 11       , current_blk
 12       , next_blk
 13  from dist_key_blk
 14  where current_blk &lt;&gt; next_blk
 15  )
 16  ;

     CLUSF
----------
       122

</pre>
<p>2) for column c2 of table t2 </p>
<pre class="brush: plain; title: ; notranslate">

SQL&gt; select count(*) clusf
  2  from (
  3  with dist_key_blk as (
  4             select distinct c2
  5             , dbms_rowid.rowid_block_number(rowid) as current_blk
  6             , lead(dbms_rowid.rowid_block_number(rowid), 1, 99999999) over (ORDER BY c2) as next_blk
  7             from t2
  8             order by 1, 2
  9  )
 10  select c2
 11       , current_blk
 12       , next_blk
 13  from dist_key_blk
 14  where current_blk &lt;&gt; next_blk
 15  );

     CLUSF
----------
       228

</pre>
<p>Obviously, the query is only the fruit of my imagination, how it should work according to the definition &#8230;<br />
I did not say which is right, but I think it&#8217;s pretty close &#8230;</p>
<p>HTH</p>
<p>Donatello Settembrino</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pavan Kumar N</title>
		<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/#comment-2979</link>
		<dc:creator><![CDATA[Pavan Kumar N]]></dc:creator>
		<pubDate>Mon, 21 Mar 2011 18:08:47 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=4674#comment-2979</guid>
		<description><![CDATA[Hi Charles,

As per my knowledge it would be depend on the part of the of data that got inserted and % deletions/modifications carried out on index segment (impacted by table changes). From you example I observe that, index tree would right hand tree for c1 and left hand tree for c2 columns, as the data got inserted in chronological order. Looking into real transaction table, we might not come across. So as the data got inserted newly segment (perhaps no row migrations/chained rows) - inturn directly impacting on index it would be less. From the posted example in the above scenario, we hae 0% changes we could see the &quot;table data is stored clustered as per index key values&quot;.

I hope it would be helpful to suggest your valuable comments, so inturn I can rectify my understanding with concept.]]></description>
		<content:encoded><![CDATA[<p>Hi Charles,</p>
<p>As per my knowledge it would be depend on the part of the of data that got inserted and % deletions/modifications carried out on index segment (impacted by table changes). From you example I observe that, index tree would right hand tree for c1 and left hand tree for c2 columns, as the data got inserted in chronological order. Looking into real transaction table, we might not come across. So as the data got inserted newly segment (perhaps no row migrations/chained rows) &#8211; inturn directly impacting on index it would be less. From the posted example in the above scenario, we hae 0% changes we could see the &#8220;table data is stored clustered as per index key values&#8221;.</p>
<p>I hope it would be helpful to suggest your valuable comments, so inturn I can rectify my understanding with concept.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Narendra</title>
		<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/#comment-2977</link>
		<dc:creator><![CDATA[Narendra]]></dc:creator>
		<pubDate>Mon, 21 Mar 2011 16:47:42 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=4674#comment-2977</guid>
		<description><![CDATA[Charles,

Thanks for correcting my post. I should have mentioned my test was carried out on 10.2.0.1.
Now, I must admit that I don&#039;t know how oracle calculates clustering factor so I can&#039;t really explain whether (and how) number of non-unique index key values will impact the index clustering factor when the table data is in exact reverse order of the index key but I have a feeling that as long as the &quot;exact reverse order&quot; criteria is met by table data (with corresponding index keys), the clustering factor would remain close to number of blocks (rather than number of rows), which would enable the CBO to use that index to access data when possible.]]></description>
		<content:encoded><![CDATA[<p>Charles,</p>
<p>Thanks for correcting my post. I should have mentioned my test was carried out on 10.2.0.1.<br />
Now, I must admit that I don&#8217;t know how oracle calculates clustering factor so I can&#8217;t really explain whether (and how) number of non-unique index key values will impact the index clustering factor when the table data is in exact reverse order of the index key but I have a feeling that as long as the &#8220;exact reverse order&#8221; criteria is met by table data (with corresponding index keys), the clustering factor would remain close to number of blocks (rather than number of rows), which would enable the CBO to use that index to access data when possible.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charles Hooper</title>
		<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/#comment-2976</link>
		<dc:creator><![CDATA[Charles Hooper]]></dc:creator>
		<pubDate>Mon, 21 Mar 2011 15:35:19 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=4674#comment-2976</guid>
		<description><![CDATA[Narendra,

Nice example!  I was expecting to see results similar to those for the test case that I posted in this blog article.  I guess that is the reason why results should be tested when the results are inconsistent with what one remembers to be true.  These are the results that I received on one of the servers (running 10.2.0.2):
&lt;pre&gt;
TABLE_NAME INDEX_NAME CLUSTERING_FACTOR   NUM_ROWS     BLOCKS
---------- ---------- ----------------- ---------- ----------
T2         IND_T2_C1                221     100000        180
T2         IND_T2_C2                479     100000        180
&lt;/pre&gt;]]></description>
		<content:encoded><![CDATA[<p>Narendra,</p>
<p>Nice example!  I was expecting to see results similar to those for the test case that I posted in this blog article.  I guess that is the reason why results should be tested when the results are inconsistent with what one remembers to be true.  These are the results that I received on one of the servers (running 10.2.0.2):</p>
<pre>
TABLE_NAME INDEX_NAME CLUSTERING_FACTOR   NUM_ROWS     BLOCKS
---------- ---------- ----------------- ---------- ----------
T2         IND_T2_C1                221     100000        180
T2         IND_T2_C2                479     100000        180
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charles Hooper</title>
		<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/#comment-2975</link>
		<dc:creator><![CDATA[Charles Hooper]]></dc:creator>
		<pubDate>Mon, 21 Mar 2011 15:13:17 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=4674#comment-2975</guid>
		<description><![CDATA[Dom,

Nice catch - you are correct regarding the C3/C4 column was populated.  I wonder if that is a sign that I need to work on my short-term memory too.  I see that I have a bit more experimentation to do before clustering some other factor again.  :-)]]></description>
		<content:encoded><![CDATA[<p>Dom,</p>
<p>Nice catch &#8211; you are correct regarding the C3/C4 column was populated.  I wonder if that is a sign that I need to work on my short-term memory too.  I see that I have a bit more experimentation to do before clustering some other factor again.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dom Brooks</title>
		<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/#comment-2973</link>
		<dc:creator><![CDATA[Dom Brooks]]></dc:creator>
		<pubDate>Mon, 21 Mar 2011 13:14:09 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=4674#comment-2973</guid>
		<description><![CDATA[Chapter 5 - exactly.

You&#039;ve said C3 in your comment above, but that seems to be C4 from the original examples.

&gt; a faint memory of something that I just simply do not think about often enough 
If it wasn&#039;t for faint memories and vague recollections, my mind would be blank.]]></description>
		<content:encoded><![CDATA[<p>Chapter 5 &#8211; exactly.</p>
<p>You&#8217;ve said C3 in your comment above, but that seems to be C4 from the original examples.</p>
<p>&gt; a faint memory of something that I just simply do not think about often enough<br />
If it wasn&#8217;t for faint memories and vague recollections, my mind would be blank.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dom Brooks</title>
		<link>http://hoopercharles.wordpress.com/2011/03/21/nested-loops-join-the-smaller-table-is-the-driving-table-the-larger-table-is-the-driving-table/#comment-2972</link>
		<dc:creator><![CDATA[Dom Brooks]]></dc:creator>
		<pubDate>Mon, 21 Mar 2011 13:07:00 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=4674#comment-2972</guid>
		<description><![CDATA[&quot;key&quot; is a bad choice of term, &quot;indexed value&quot; better...]]></description>
		<content:encoded><![CDATA[<p>&#8220;key&#8221; is a bad choice of term, &#8220;indexed value&#8221; better&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
