<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ugly Code! &#187; optimisation</title>
	<atom:link href="http://uglycode.com/tag/optimisation/feed/" rel="self" type="application/rss+xml" />
	<link>http://uglycode.com</link>
	<description>c0ding is seriose busines!!!!1</description>
	<lastBuildDate>Thu, 15 Jul 2010 20:03:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Always, ALWAYS use sub-selects!</title>
		<link>http://uglycode.com/2009/01/always-always-use-sub-selects/</link>
		<comments>http://uglycode.com/2009/01/always-always-use-sub-selects/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 12:54:57 +0000</pubDate>
		<dc:creator>analytik</dc:creator>
				<category><![CDATA[optimization]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[pgsql]]></category>
		<category><![CDATA[speed]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sub-select]]></category>

		<guid isPermaLink="false">http://uglycode.com/?p=30</guid>
		<description><![CDATA[SQL with sub-sub-sub-selects: 9 minutes

SELECT p.sku AS &#34;Product code&#34;,
 p.annotation AS &#34;Product Description&#34;,
  &#40;SELECT COUNT&#40;orders_products.fk_product_id&#41; AS &#34;count&#34;
   FROM orders_products
   INNER JOIN orders 
     ON orders.id = orders_products.fk_order_id 
     AND orders.order_created &#62;= '2008-12-01 00:00:00' 
     AND orders.order_created &#60; = [...]]]></description>
			<content:encoded><![CDATA[<p>SQL with sub-sub-sub-selects: 9 minutes</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> p<span style="color: #66cc66;">.</span>sku <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">&quot;Product code&quot;</span><span style="color: #66cc66;">,</span>
 p<span style="color: #66cc66;">.</span>annotation <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">&quot;Product Description&quot;</span><span style="color: #66cc66;">,</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> COUNT<span style="color: #66cc66;">&#40;</span>orders_products<span style="color: #66cc66;">.</span>fk_product_id<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">&quot;count&quot;</span>
   <span style="color: #993333; font-weight: bold;">FROM</span> orders_products
   <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> orders 
     <span style="color: #993333; font-weight: bold;">ON</span> orders<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> orders_products<span style="color: #66cc66;">.</span>fk_order_id 
     <span style="color: #993333; font-weight: bold;">AND</span> orders<span style="color: #66cc66;">.</span>order_created <span style="color: #66cc66;">&gt;=</span> <span style="color: #ff0000;">'2008-12-01 00:00:00'</span> 
     <span style="color: #993333; font-weight: bold;">AND</span> orders<span style="color: #66cc66;">.</span>order_created <span style="color: #66cc66;">&lt;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'2008-12-07 24:00:00'</span>
   <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> products 
     <span style="color: #993333; font-weight: bold;">ON</span> products<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> orders_products<span style="color: #66cc66;">.</span>fk_product_id 
     <span style="color: #993333; font-weight: bold;">AND</span> products<span style="color: #66cc66;">.</span>sku <span style="color: #66cc66;">=</span> p<span style="color: #66cc66;">.</span>sku
   <span style="color: #993333; font-weight: bold;">WHERE</span> orders_products<span style="color: #66cc66;">.</span>fk_order_status_id <span style="color: #66cc66;">&gt;=</span> <span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">&quot;Total number of units sold&quot;</span><span style="color: #66cc66;">,</span>
    <span style="color: #66cc66;">&#40;</span>
      <span style="color: #993333; font-weight: bold;">SELECT</span> SUM<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>orders_products<span style="color: #66cc66;">.</span>price<span style="color: #66cc66;">-</span>orders_products<span style="color: #66cc66;">.</span>discount<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">1.15</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">&quot;sum&quot;</span>
      <span style="color: #993333; font-weight: bold;">FROM</span> orders_products
      <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> orders 
        <span style="color: #993333; font-weight: bold;">ON</span> orders<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> orders_products<span style="color: #66cc66;">.</span>fk_order_id 
        <span style="color: #993333; font-weight: bold;">AND</span> orders<span style="color: #66cc66;">.</span>order_created <span style="color: #66cc66;">&gt;=</span> <span style="color: #ff0000;">'2008-12-01 00:00:00'</span>
        <span style="color: #993333; font-weight: bold;">AND</span> orders<span style="color: #66cc66;">.</span>order_created <span style="color: #66cc66;">&lt;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'2008-12-07 24:00:00'</span>
      <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> products 
        <span style="color: #993333; font-weight: bold;">ON</span> products<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> orders_products<span style="color: #66cc66;">.</span>fk_product_id 
        <span style="color: #993333; font-weight: bold;">AND</span> products<span style="color: #66cc66;">.</span>sku <span style="color: #66cc66;">=</span> p<span style="color: #66cc66;">.</span>sku
      <span style="color: #993333; font-weight: bold;">WHERE</span> orders_products<span style="color: #66cc66;">.</span>fk_order_status_id <span style="color: #66cc66;">&gt;=</span> <span style="color: #cc66cc;">30</span>
     <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">&quot;Total value&quot;</span>
     <span style="color: #993333; font-weight: bold;">FROM</span> products p
      <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#40;</span>
        <span style="color: #993333; font-weight: bold;">SELECT</span> COUNT<span style="color: #66cc66;">&#40;</span>orders_products<span style="color: #66cc66;">.</span>fk_product_id<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">&quot;count&quot;</span>
        <span style="color: #993333; font-weight: bold;">FROM</span> orders_products
        <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> orders 
          <span style="color: #993333; font-weight: bold;">ON</span> orders<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> orders_products<span style="color: #66cc66;">.</span>fk_order_id 
          <span style="color: #993333; font-weight: bold;">AND</span> orders<span style="color: #66cc66;">.</span>order_created <span style="color: #66cc66;">&gt;=</span> <span style="color: #ff0000;">'2008-12-01 00:00:00'</span>
          <span style="color: #993333; font-weight: bold;">AND</span> orders<span style="color: #66cc66;">.</span>order_created <span style="color: #66cc66;">&lt;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'2008-12-07 24:00:00'</span>
        <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> products 
          <span style="color: #993333; font-weight: bold;">ON</span> products<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> orders_products<span style="color: #66cc66;">.</span>fk_product_id
          <span style="color: #993333; font-weight: bold;">AND</span> products<span style="color: #66cc66;">.</span>sku <span style="color: #66cc66;">=</span> p<span style="color: #66cc66;">.</span>sku
        <span style="color: #993333; font-weight: bold;">WHERE</span> orders_products<span style="color: #66cc66;">.</span>fk_order_status_id <span style="color: #66cc66;">&gt;=</span> <span style="color: #cc66cc;">30</span>
      <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span></pre></div></div>

<p>Inner joins for the same thing: 400ms</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> products<span style="color: #66cc66;">.</span>sku<span style="color: #66cc66;">,</span> products<span style="color: #66cc66;">.</span>annotation<span style="color: #66cc66;">,</span>
  COUNT<span style="color: #66cc66;">&#40;</span>orders_products<span style="color: #66cc66;">.</span>fk_product_id<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">&quot;count&quot;</span><span style="color: #66cc66;">,</span>
  SUM <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>orders_products<span style="color: #66cc66;">.</span>price<span style="color: #66cc66;">-</span>orders_products<span style="color: #66cc66;">.</span>discount<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">1.15</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #ff0000;">&quot;sum&quot;</span>
  <span style="color: #993333; font-weight: bold;">FROM</span> orders_products
  <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> orders 
    <span style="color: #993333; font-weight: bold;">ON</span> orders<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> orders_products<span style="color: #66cc66;">.</span>fk_order_id 
    <span style="color: #993333; font-weight: bold;">AND</span> orders<span style="color: #66cc66;">.</span>order_created <span style="color: #66cc66;">&gt;=</span> <span style="color: #ff0000;">'2008-12-01 00:00:00'</span> 
    <span style="color: #993333; font-weight: bold;">AND</span> orders<span style="color: #66cc66;">.</span>order_created <span style="color: #66cc66;">&lt;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'2008-12-07 24:00:00'</span>
  <span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> products 
    <span style="color: #993333; font-weight: bold;">ON</span> products<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> orders_products<span style="color: #66cc66;">.</span>fk_product_id
  <span style="color: #993333; font-weight: bold;">WHERE</span> orders_products<span style="color: #66cc66;">.</span>fk_order_status_id <span style="color: #66cc66;">&gt;=</span> <span style="color: #cc66cc;">30</span>
  <span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> products<span style="color: #66cc66;">.</span>sku<span style="color: #66cc66;">,</span> products<span style="color: #66cc66;">.</span>annotation</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://uglycode.com/2009/01/always-always-use-sub-selects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
