<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Optimize Crazy Select Statement with Left Join in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953351#M1694328</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tim,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Do not use any ALIAS. Instead use i.e. &lt;/P&gt;&lt;P&gt;iflos&lt;SPAN class="keyword"&gt;~tplnr &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;afvc&lt;SPAN class="keyword"&gt;~aufpl&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;etc.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;This gives a boost to readability and makes the JOIN much less crazy&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;2. Make sure you have as many primary or secondary index fields in the join conditions as possible. If you join on a field that has no database index (or is not the first field in the index) this will give bad performance. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;Rather consider creating a database index where needed.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;If all join conditions use index-based access (check ST05!) you won't get better performance regardsless what you do and regardless what self-declared experts may tell you.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;Clemens&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 09 Aug 2012 21:10:33 GMT</pubDate>
    <dc:creator>Clemenss</dc:creator>
    <dc:date>2012-08-09T21:10:33Z</dc:date>
    <item>
      <title>Optimize Crazy Select Statement with Left Join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953348#M1694325</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a crazy select statement that I would like to optimize, it uses many Left Joins. Perhaps, breaking them into multiple select statements will improve performance? For simplicity, here is a subset of the select:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;P&gt;SELECT p~aufnr &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p~vornr &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c~vornr &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i~strno&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM custom_table AS p&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEFT JOIN iflos AS i ON i~tplnr = p~tplnr&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEFT JOIN afvc AS c ON c~aufpl = p~aufpl&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc...&lt;/P&gt;&lt;P&gt;&lt;SPAN class="L0S52"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; APPENDING CORRESPONDING &lt;SPAN class="L0S52"&gt;FIELDS &lt;/SPAN&gt;&lt;SPAN class="L0S52"&gt;OF &lt;/SPAN&gt;&lt;SPAN class="L0S52"&gt;TABLE &lt;/SPAN&gt;i_data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="L0S52"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE p~aufnr = order_list-aufnr&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="L0S52"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AND p~autyp IN r_autyp&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="L0S52"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AND etc...&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Aug 2012 18:45:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953348#M1694325</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2012-08-09T18:45:21Z</dc:date>
    </item>
    <item>
      <title>Re: Optimize Crazy Select Statement with Left Join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953349#M1694326</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Are you planning to use for all entries by breaking the select query. It may or may not bring the improvement. There are multiple discussions on joins vs for all entries. Read them to get some insight. And finally perform a real world stress test to see which one is better - preferably in a quality system where data is similar to the volumes in production.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also please try not to use the&amp;nbsp; &lt;STRONG&gt;corresponding fields&lt;/STRONG&gt; addition. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Shravan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Aug 2012 20:16:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953349#M1694326</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2012-08-09T20:16:26Z</dc:date>
    </item>
    <item>
      <title>Re: Optimize Crazy Select Statement with Left Join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953350#M1694327</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I was thinking of replacing the LEFT JOIN with SELECT SINGLE in a LOOP, but not sure how?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Aug 2012 21:00:10 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953350#M1694327</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2012-08-09T21:00:10Z</dc:date>
    </item>
    <item>
      <title>Re: Optimize Crazy Select Statement with Left Join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953351#M1694328</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tim,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Do not use any ALIAS. Instead use i.e. &lt;/P&gt;&lt;P&gt;iflos&lt;SPAN class="keyword"&gt;~tplnr &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;afvc&lt;SPAN class="keyword"&gt;~aufpl&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;etc.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;This gives a boost to readability and makes the JOIN much less crazy&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;2. Make sure you have as many primary or secondary index fields in the join conditions as possible. If you join on a field that has no database index (or is not the first field in the index) this will give bad performance. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;Rather consider creating a database index where needed.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;If all join conditions use index-based access (check ST05!) you won't get better performance regardsless what you do and regardless what self-declared experts may tell you.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;Clemens&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Aug 2012 21:10:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953351#M1694328</guid>
      <dc:creator>Clemenss</dc:creator>
      <dc:date>2012-08-09T21:10:33Z</dc:date>
    </item>
    <item>
      <title>Re: Optimize Crazy Select Statement with Left Join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953352#M1694329</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You should avoid multiple Joins in a select and also avoid using select in a loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Better divide the the current select statement into two select statements using for all entries or joins i.e., one select with&amp;nbsp; &lt;SPAN class="keyword"&gt;i~tplnr = p~tplnr&amp;nbsp; and other select with &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;c~aufpl = p~aufpl&amp;nbsp; using for all entries or join.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and also Instead of select inside a loop.consider select outside the loop and get the records into a Internal table and inside loop use Read statement over the fetched Internal table, this will help in better performance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Ramana&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Aug 2012 03:40:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953352#M1694329</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2012-08-10T03:40:49Z</dc:date>
    </item>
    <item>
      <title>Re: Optimize Crazy Select Statement with Left Join</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953353#M1694330</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1.) stopp all guesswork&lt;/P&gt;&lt;P&gt;2.) leave the statement as it is&lt;/P&gt;&lt;P&gt;3.) analyze the perf problem by &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.) taking an ST05 trace&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.) analyzing the execution plan&lt;/P&gt;&lt;P&gt;4.) try to understand the problem in the plan&lt;/P&gt;&lt;P&gt;5.) fix that problem&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;don't guess, don't workaround on the ABAP layer until you found the problem on the DB layer and tried to fix the problem on the DB layer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If your car would go to slow or not as fast as expected you would not start with making random&lt;/P&gt;&lt;P&gt;changes to it&amp;nbsp; e.g. just refill oil or change tyres would you? You would first analyze the problem... (brakes not clsed, enough air in tyres, check oil, ...)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hermann&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Aug 2012 07:16:28 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/optimize-crazy-select-statement-with-left-join/m-p/8953353#M1694330</guid>
      <dc:creator>HermannGahm</dc:creator>
      <dc:date>2012-08-14T07:16:28Z</dc:date>
    </item>
  </channel>
</rss>

