details:   /erp/devel/pi/rev/d7482229a1ec
changeset: 7914:d7482229a1ec
user:      Stefan Hühner <stefan.huehner <at> openbravo.com>
date:      Thu Jul 22 16:05:00 2010 +0200
summary:   Fixed 14035: fact_acct_reset is too slow
Speed up this pl-function by:
- add missing index to c_periodcontrol table
- move one function call out of a complex query as it does not depend on any
  data from the query, instead execute the function onces before the bigger
  query.

diffstat:

 src-db/database/model/functions/FACT_ACCT_RESET.xml |  4 +++-
 src-db/database/model/tables/C_PERIODCONTROL.xml    |  3 +++
 2 files changed, 6 insertions(+), 1 deletions(-)

diffs (41 lines):

diff -r fa203c41fbfd -r d7482229a1ec 
src-db/database/model/functions/FACT_ACCT_RESET.xml
--- a/src-db/database/model/functions/FACT_ACCT_RESET.xml       Fri Jul 23 
13:03:10 2010 +0200
+++ b/src-db/database/model/functions/FACT_ACCT_RESET.xml       Thu Jul 22 
16:05:00 2010 +0200
@@ -41,6 +41,7 @@
   v_DateColumn VARCHAR2(2000):='';
   v_AD_Org_ID VARCHAR2(32);
   v_TableName VARCHAR2(48):='';
+  v_AD_Org_CalOwner VARCHAR(32);
   -- Parameter
   TYPE RECORD IS REF CURSOR;
     Cur_Parameter RECORD;
@@ -207,6 +208,7 @@
           -- Update Table
           v_ResultStr:='ResetTable:' || Cur_Tables.TableName;
            IF(v_DeletePosting='Y') THEN
+            v_AD_Org_CalOwner := AD_ORG_GETCALENDAROWNER(v_AD_Org_ID);
             FOR Cur_Fact_Acct IN (
               SELECT DISTINCT Record_ID
               FROM FACT_ACCT
@@ -226,7 +228,7 @@
                       AND fa_aux.AD_TABLE_ID = FACT_ACCT.AD_TABLE_ID
                       AND fa_aux.RECORD_ID = FACT_ACCT.RECORD_ID
                       AND C_PeriodControl.AD_Org_ID=AD_Org.AD_Org_ID
-                      AND 
C_PeriodControl.AD_Org_ID=AD_ORG_GETCALENDAROWNER(v_AD_Org_ID)
+                      AND C_PeriodControl.AD_Org_ID=v_AD_Org_CalOwner
                     )
                 AND Record_ID=(
                       CASE COALESCE(v_Record_ID, '0') WHEN '0' THEN Record_ID 
ELSE v_Record_ID
diff -r fa203c41fbfd -r d7482229a1ec 
src-db/database/model/tables/C_PERIODCONTROL.xml
--- a/src-db/database/model/tables/C_PERIODCONTROL.xml  Fri Jul 23 13:03:10 
2010 +0200
+++ b/src-db/database/model/tables/C_PERIODCONTROL.xml  Thu Jul 22 16:05:00 
2010 +0200
@@ -62,6 +62,9 @@
       <foreign-key foreignTable="AD_ORG" name="C_PERIODCONTROL_AD_ORG">
         <reference local="AD_ORG_ID" foreign="AD_ORG_ID"/>
       </foreign-key>
+      <index name="C_PERIODCONTROL_PERIOD" unique="false">
+        <index-column name="C_PERIOD_ID"/>
+      </index>
       <check name="C_PERIODCONTROL_ISACTIVE_CHECK"><![CDATA[ISACTIVE IN ('Y', 
'N')]]></check>
     </table>
   </database>

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to