<?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; optimization</title>
	<atom:link href="http://uglycode.com/category/optimization/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>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<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; = '2008-12-07 24:00:00' INNER JOIN products ON products.id = orders_products.fk_product_id AND products.sku = p.sku WHERE orders_products.fk_order_status_id &#62;= 30&#41; AS &#34;Total [...]]]></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> <span style="color: #993333; font-weight: bold;">COUNT</span><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> <span style="color: #993333; font-weight: bold;">SUM</span><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> <span style="color: #993333; font-weight: bold;">COUNT</span><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>
  <span style="color: #993333; font-weight: bold;">COUNT</span><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>
  <span style="color: #993333; font-weight: bold;">SUM</span> <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>
		<item>
		<title>OCD code?</title>
		<link>http://uglycode.com/2008/10/ocd-code/</link>
		<comments>http://uglycode.com/2008/10/ocd-code/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 20:51:09 +0000</pubDate>
		<dc:creator>analytik</dc:creator>
				<category><![CDATA[optimization]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[queries]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://uglycode.com/?p=10</guid>
		<description><![CDATA[if &#40;!empty&#40;fetchResult&#40;&#41;&#41; and isObject&#40;fetchResult&#40;&#41;&#41; and is_a&#40;fetchResult&#40;&#41;, &#34;objectType&#34;&#41;&#41; &#123; $result = fetchResult&#40;&#41;; doSomethingElse&#40;&#41;; &#125; elseif &#40;isObject&#40;fetchResult&#40;&#41;&#41; &#123; $result = fetchResult&#40;&#41;; &#125; I think the guy who wrote it was slightly OCD. And he definitely forgot that fetchResult() fetches results&#8230; from the database. After optimizing aforementioned code and singleton-ifying the fetchResult(), number of queries made in one [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span>fetchResult<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> and isObject<span style="color: #009900;">&#40;</span>fetchResult<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> and <span style="color: #990000;">is_a</span><span style="color: #009900;">&#40;</span>fetchResult<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;objectType&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> fetchResult<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  doSomethingElse<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>isObject<span style="color: #009900;">&#40;</span>fetchResult<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> fetchResult<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>I think the guy who wrote it was slightly OCD. And he definitely forgot that fetchResult() fetches results&#8230; from the database.</p>
<p>After optimizing aforementioned code and singleton-ifying the fetchResult(), number of queries made in one pageload went down to 300 from 800. Our code is just <em>awesome</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://uglycode.com/2008/10/ocd-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

