Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Load/ Reload of delivery Days window takes too long. #437

Closed
metas-mk opened this issue Jun 7, 2017 · 3 comments
Closed

Load/ Reload of delivery Days window takes too long. #437

metas-mk opened this issue Jun 7, 2017 · 3 comments

Comments

@metas-mk
Copy link
Member

metas-mk commented Jun 7, 2017

Is this a bug or feature request?

Feature Request

What is the current behavior?

The Load/ reload of delivery days window takes much too long. https://w101.metasfresh.com:8443/window/540110

Belongs to this frontend issue: metasfresh/metasfresh-webui-frontend-legacy#847

@metas-mk metas-mk added this to the 2017-24 milestone Jun 7, 2017
@teosarca
Copy link
Member

teosarca commented Jun 9, 2017

The SQL query which takes ages is:

-- Duration: 1.298e+04 ms (Avg. 1.298e+04 ms / 1 executions)
-- Stacktrace:  <~~~ SqlViewDataRepository.retrievePage:307 <- DefaultView.getPage:253 <- ViewRestController.getViewData:191 <~~~ WebConfig$1.doFilter:82 <~~~ ServletLoggingFilter.doFilter:89 <~~~ CORSFilter.doFilter:85 <~~~ CORSFilter.doFilter:85

SELECT master.*,

  (SELECT NULLIF (TRIM(AD_Org.Name), '') FROM AD_Org WHERE AD_Org.AD_Org_ID=master.AD_Org_ID ) AS AD_Org_ID$Display,

  (SELECT NULLIF (TRIM(M_TourVersion.Name), '') FROM M_TourVersion WHERE M_TourVersion.M_TourVersion_ID=master.M_TourVersion_ID ) AS M_TourVersion_ID$Display,

  (SELECT concat_ws('_', NULLIF (TRIM(C_BPartner.Name), ''), NULLIF (TRIM(C_BPartner.Value), '')) FROM C_BPartner WHERE C_BPartner.C_BPartner_ID=master.C_BPartner_ID ) AS C_BPartner_ID$Display,

  (SELECT NULLIF (TRIM(C_BPartner_Location.Name),'') FROM C_BPartner_Location WHERE C_BPartner_Location.C_BPartner_Location_ID=master.C_BPartner_Location_ID ) AS C_BPartner_Location_ID$Display,

  (SELECT NULLIF (TRIM(M_Tour.Name), '') FROM M_Tour WHERE M_Tour.M_Tour_ID=master.M_Tour_ID ) AS M_Tour_ID$Display,

  NULL AS _sel_Parent_ID
FROM
  (SELECT sum(M_DeliveryDay.QtyDelivered_TU) over (partition BY M_DeliveryDay.M_Tour_Instance_ID
                                                   ORDER BY SeqNo nulls FIRST, M_DeliveryDay.M_DeliveryDay_ID) AS QtyDelivered_TU_Accum,
          sum(M_DeliveryDay.QtyDelivered_LU) over (partition BY M_DeliveryDay.M_Tour_Instance_ID
                                                   ORDER BY SeqNo nulls FIRST, M_DeliveryDay.M_DeliveryDay_ID) AS QtyDelivered_LU_Accum,
          M_DeliveryDay.M_Tour_Instance_ID AS M_Tour_Instance_ID,
          M_DeliveryDay.QtyDelivered_TU AS QtyDelivered_TU,
          M_DeliveryDay.QtyDelivered_LU AS QtyDelivered_LU,
          M_DeliveryDay.SeqNo AS SeqNo,
          sum(M_DeliveryDay.QtyToDeliver_TU) over (partition BY M_DeliveryDay.M_Tour_Instance_ID
                                                   ORDER BY SeqNo nulls FIRST, M_DeliveryDay.M_DeliveryDay_ID) AS QtyToDeliver_TU_Accum,
          M_DeliveryDay.QtyToDeliver_TU AS QtyToDeliver_TU,
          sum(M_DeliveryDay.QtyToDeliver_LU) over (partition BY M_DeliveryDay.M_Tour_Instance_ID
                                                   ORDER BY SeqNo nulls FIRST, M_DeliveryDay.M_DeliveryDay_ID) AS QtyToDeliver_LU_Accum,
          M_DeliveryDay.QtyToDeliver_LU AS QtyToDeliver_LU,
          M_DeliveryDay.DeliveryDateTimeMax AS DeliveryDateTimeMax,
          sum(M_DeliveryDay.QtyOrdered_TU) over (partition BY M_DeliveryDay.M_Tour_Instance_ID
                                                 ORDER BY SeqNo nulls FIRST, M_DeliveryDay.M_DeliveryDay_ID) AS QtyOrdered_TU_Accum,
          M_DeliveryDay.QtyOrdered_TU AS QtyOrdered_TU,
          sum(M_DeliveryDay.QtyOrdered_LU) over (partition BY M_DeliveryDay.M_Tour_Instance_ID
                                                 ORDER BY SeqNo nulls FIRST, M_DeliveryDay.M_DeliveryDay_ID) AS QtyOrdered_LU_Accum,
          M_DeliveryDay.QtyOrdered_LU AS QtyOrdered_LU,
          M_DeliveryDay.AD_Org_ID AS AD_Org_ID,
          M_DeliveryDay.M_TourVersion_ID AS M_TourVersion_ID,
          M_DeliveryDay.C_BPartner_ID AS C_BPartner_ID,
          M_DeliveryDay.C_BPartner_Location_ID AS C_BPartner_Location_ID,
          M_DeliveryDay.DeliveryDate AS DeliveryDate,
          M_DeliveryDay.BufferHours AS BufferHours,
          M_DeliveryDay.IsManual AS IsManual,
          M_DeliveryDay.IsActive AS IsActive,
          M_DeliveryDay.Processed AS Processed,
          M_DeliveryDay.IsToBeFetched AS IsToBeFetched,
          M_DeliveryDay.Updated AS Updated,
          M_DeliveryDay.UpdatedBy AS UpdatedBy,
          M_DeliveryDay.Created AS Created,
          M_DeliveryDay.CreatedBy AS CreatedBy,
          M_DeliveryDay.AD_Client_ID AS AD_Client_ID,
          M_DeliveryDay.M_Tour_ID AS M_Tour_ID,
          M_DeliveryDay.M_DeliveryDay_ID AS M_DeliveryDay_ID,
          sel.Line AS _sel_SeqNo,
          sel.UUID AS _sel_UUID,
          sel.Record_ID AS _sel_Record_ID
   FROM T_WEBUI_ViewSelection sel
   LEFT OUTER JOIN M_DeliveryDay ON (M_DeliveryDay.M_DeliveryDay_ID = sel.Record_ID)
) master
WHERE _sel_UUID='540110-37a69e92-94a5-4d70-acdc-bcb3db6f1f75'
  AND _sel_SeqNo BETWEEN 1 AND 20
ORDER BY _sel_SeqNo -- Parameters[3]: {1=540110-37a69e92-94a5-4d70-acdc-bcb3db6f1f75, 2=1, 3=20}

Query plan:
image

teosarca added a commit that referenced this issue Jun 9, 2017
…wSelection table

because it seems that PostgreSQL it's building a fucked up plan in case
some columns are using window functions.

#437
@teosarca
Copy link
Member

teosarca commented Jun 9, 2017

Update: it seems postgresql was optimizing wrongly the generated SQL for selecting view page.
And it seems that's happening when we have some SQL columns which are using window functions.

After moving the UUID filtering closer to T_WEBUI_ViewSelection table everything is fast again.
image

@metas-lc
Copy link

IT
opened window/540110 => instantly loaded
refresh => instantly refreshed

metas-ts added a commit to metasfresh/metasfresh that referenced this issue Jun 14, 2017
[#878](metasfresh/metasfresh-webui-frontend-legacy#878) Error firework when logout
[#880](metasfresh/metasfresh-webui-frontend-legacy#880) Change Icon for URL Link
[#881](metasfresh/metasfresh-webui-frontend-legacy#881) Error when pressing Action Menu in Collapsible Grid Window
[#883](metasfresh/metasfresh-webui-frontend-legacy#883) hu editor doesn't update
[#451](metasfresh/metasfresh-webui-api-legacy#451) Provide view sticky filters to be displayed by frontend
[#456](metasfresh/metasfresh-webui-api-legacy#456) Outbound Mail endpoint prototype
[#1807](#1807) Fix "Create primary key" process
[#879](metasfresh/metasfresh-webui-frontend-legacy#879) Avatar Picture not deleted from Header when cleared in Profile Settings
[#1802](#1802) picking terminal is not opening
[#436](metasfresh/metasfresh-webui-api-legacy#436) Manufacturing Order Issue not possible after barcode filtering
[#453](metasfresh/metasfresh-webui-api-legacy#453) Password process parameters shall allow showing the password
[#849](metasfresh/metasfresh-webui-frontend-legacy#849) manufacturing order doesn't open
[#437](metasfresh/metasfresh-webui-api-legacy#437) Load/ Reload of delivery Days window takes too long.
[#446](metasfresh/metasfresh-webui-api-legacy#446) Cannot open the menu when logged in as System Administrator
[#433](metasfresh/metasfresh-webui-api-legacy#433) Show Manufacturing Order number in window header
[#1793](#1793) fix jasper document for vendor returns
[#848](metasfresh/metasfresh-webui-frontend-legacy#848) notifications don't update
[#400](metasfresh/metasfresh-webui-api-legacy#400) minimum password length error message not displayed
[#444](metasfresh/metasfresh-webui-api-legacy#444) Make Dashboard Translatable
[#447](metasfresh/metasfresh-webui-api-legacy#447) Truncate WEBUI_ViewSelection tables on startup
[#847](metasfresh/metasfresh-webui-frontend-legacy#847) Loading of empty delivery Days Window take long
[#1735](#1735) istransferwhennull not working in webUI but in java client
[#1748](#1748) Project Documentation: Screenshots
[#795](metasfresh/metasfresh-webui-frontend-legacy#795) On tab stale event, don't refresh tabs which are queryOnLoad but are not the active tab

me-45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants