<?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; sql</title>
	<atom:link href="http://uglycode.com/tag/sql/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>
		<item>
		<title>transactions</title>
		<link>http://uglycode.com/2008/12/transactions/</link>
		<comments>http://uglycode.com/2008/12/transactions/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 21:21:53 +0000</pubDate>
		<dc:creator>analytik</dc:creator>
				<category><![CDATA[ugly code]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[transaction]]></category>

		<guid isPermaLink="false">http://uglycode.com/?p=22</guid>
		<description><![CDATA[
function run&#40;&#41; &#123;
  ...
  //DONT TOUCH !!! -&#38;gt; THIS DB TRANS STARTS, BECAUSE XYZ MODUL CONSIST OF DB::Commit() clausule
  DB::Trans&#40;&#41;;
  return $returnVal;
&#125;

Hey guys, let&#8217;s start a transaction here and expect that no one will ever change the code in any of the other 2000 files. And if they do, I&#8217;m sure [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #339933;">...</span>
  <span style="color: #666666; font-style: italic;">//DONT TOUCH !!! -&amp;gt; THIS DB TRANS STARTS, BECAUSE XYZ MODUL CONSIST OF DB::Commit() clausule</span>
  DB<span style="color: #339933;">::</span><span style="color: #004000;">Trans</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$returnVal</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Hey guys, let&#8217;s start a transaction here and expect that no one will ever change the code in any of the other 2000 files. And if they do, I&#8217;m sure that while they&#8217;ll be editing &#8220;modul&#8221; XYZ, I&#8217;m sure they will know that transaction starts here.</p>
]]></content:encoded>
			<wfw:commentRss>http://uglycode.com/2008/12/transactions/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 pageload went [...]]]></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>
