Skip to main content
Answer

How to improve performance of simple Generic Inquiries/Primary Lists

  • November 13, 2025
  • 7 replies
  • 95 views

Forum|alt.badge.img+1

I have a client with 800,000 AR Invoices and 700,000 AP Bills.

Their out of the box Generic Inquiries for AR Invoices and Memos and Bills and Adjustments are slow.

Times are like 45 seconds to load up all 800,000 AR records.  Similarly AP.   If I filter say to load only open records - 15 seconds.

But of concern, once loaded it takes 45 seconds to go to page 2 (page setting is 0).    Likewise 15 seconds for open AR.

Some info:  This is MYOB Acumatica.   It runs on AWS on MY SQL database.  Version is 2024.2.

  • What is the Acumatica experience?
  • Does GI performance improve with 2025 releases?
  • Does Microsoft SQL run faster?

Please note that i have reviewed the GI’s for performance improvements.   Their is not issues with joins.  There are only 2 tables e.g.  ARInvoice and ARRegisterReport.

Best answer by aaghaei

Please make a copy of your GI and use the below attached to see how it works for you on AP Bills. Both APInvoice and ARInvoice are instanciated from the AP/ARRegister so technically anything you have in Register exist in the AR/APInvoice too. I am not sure why but there is an unnecessary join between Register and Invoice tables in out of the box GI. The GI I have attached on close to 1.1 million AP Bills takes 4-5 second to load and paging takes the same amount of time too. The DB we are on it is MS SQL. I revampted Acumatica AP GI a year or so ago and adjusted as attached here. I believe some indexing also was involved at the time but my memory is dusty.

7 replies

mohammadnawaz51
Jr Varsity I
Forum|alt.badge.img+4

@jlpatch This Might be a relations in the GI.

Please review the below help article 

 


PaulMainard55
Captain I
Forum|alt.badge.img+2

@jlpatch,

Some of the “out of the box” GIs like invoices and bills require a little massaging to make them more effiicient as the database grows.  While you say there are no issues with the joins, sometimes the issue has to do with too few joins as opposed to too many.  The DACs on a number of these GIs are accessing normalized data references that “live” in other tables, such as “Users”, “BAccount”, “Location”, “Contact”,and the like.  Adding joins to the tables  where some of the master data is housed may reduce the DB overhead and help with performance.  

With that said, I’ve seen GI performance degradate when dealing with data sets of this magnitude; even if the GI has been optimized. 

If you could share some screenshots of the “Results” tab so we can see the columns that you’re using, that would help.  

Regarding the database, (My SQL vs. MS SQL), this would be a good question for a developer and/or network engineer to answer.  The issue could be more related to processing cores and MYOB licensing as opposed to your database software.  


Forum|alt.badge.img+1
  • Author
  • Jr Varsity II
  • November 14, 2025

Hello Paul

Thank you. 

Already checked all that.  Taken out inherent subqueries.


aaghaei
Captain II
Forum|alt.badge.img+10
  • Captain II
  • Answer
  • November 14, 2025

Please make a copy of your GI and use the below attached to see how it works for you on AP Bills. Both APInvoice and ARInvoice are instanciated from the AP/ARRegister so technically anything you have in Register exist in the AR/APInvoice too. I am not sure why but there is an unnecessary join between Register and Invoice tables in out of the box GI. The GI I have attached on close to 1.1 million AP Bills takes 4-5 second to load and paging takes the same amount of time too. The DB we are on it is MS SQL. I revampted Acumatica AP GI a year or so ago and adjusted as attached here. I believe some indexing also was involved at the time but my memory is dusty.


dominicpolicicchio03
Freshman I
Forum|alt.badge.img

You could try to put default date parameters on the GI going back a few months. Typically most clients don’t need to load years worth of data every time they open the GI. This leaves them the flexibility to still update the date to see all time.

Or, get further creative with the parameters/conditions to only show certain relative data but have the ability to toggle on/off with checkboxes. For an example with the Sales Orders GI, maybe a client has mostly SO orders but a bulk of their massive order count is due to ecommerce orders. You could change the parameters and conditions on the GI to only show SO orders by default, but leave the ability to toggle on/off ecommerce orders. 

Otherwise, you could create multiple “Sales Orders” GIs that are specific to the order type or some other parameters. But leave the out of the box on if needed. I don’t necessarily like making multiple GIs if I don’t have to though.


PaulMainard55
Captain I
Forum|alt.badge.img+2

Please make a copy of your GI and use the below attached to see how it works for you on AP Bills. Both APInvoice and ARInvoice are instanciated from the AP/ARRegister so technically anything you have in Register exist in the AR/APInvoice too. I am not sure why but there is an unnecessary join between Register and Invoice tables in out of the box GI. The GI I have attached on close to 1.1 million AP Bills takes 4-5 second to load and paging takes the same amount of time too. The DB we are on it is MS SQL. I revampted Acumatica AP GI a year or so ago and adjusted as attached here. I believe some indexing also was involved at the time but my memory is dusty.

Using the register table is a good idea.  Something to keep in mind.  Thanks for sharing.


Forum|alt.badge.img+1
  • Author
  • Jr Varsity II
  • November 18, 2025

Hello @aaghael

Thank you for providing an example GI.   Your stated performance is significantly better than my clients experience.  

Unfortunately when I loaded your GI, it did not result performance improvement in the My SQL environment.

But it did lead me to test removing all joins and just reporting on the APInvoice table without Joins.  This was a 50% improvement.

Although you mentioned some indexing, that would only assist if the joins were broken or special filtering required.  My suspicion is that My SQL is not as efficient as MS SQL  Your 4.5 seconds (MS SQL) on over 1.1 million records versus my 55 seconds  (My SQL) on 700,000 records.