Display Report Execution Time with #TIMING# in Oracle APEX

Search for a command to run...

Oracle APEX already includes Font APEX as the default icon library for Universal Theme. In most cases, that is enough. But in one of my APEX apps, I needed a few icons that were not available there, s

Looking to give your Oracle APEX mobile app a modern, native feel? Here’s a quick hack: add a floating action button that stays anchored at the bottom corner just like in popular mobile apps. This sma

APEX 26.1 has been updated to the Universal Theme. While much of the attention in this release is on AI features, I think the UT improvements are just as important for developers like me who care abou

The apex_barcode package offers a PL/SQL API to generate various types of barcodes. You can output barcodes as SVG (Scalable Vector Graphics) values or as PNG file blobs, making it easy to embed them

Oracle APEX makes it easy to get data on screen fast, but often, the default tabular output isn’t enough. What if you want to highlight statuses, add icons, or display badges all without writing compl

Optimizing performance is a key concern for any Oracle APEX developer, especially when building data-rich dashboards or reports. One simple but effective tool at your disposal is the #TIMING# substitution variable, which allows you to display the elapsed execution time for any report region right where your users can see it.
The *TIMING# substitution variable represents the elapsed time (in seconds) taken to render a region, including the time to fetch data and render region items. This variable is available for use in the footer of any report region (such as Interactive Reports, Classic Reports, or Charts).
Performance Transparency: Show users how long their reports take to run, helping set expectations for data-heavy queries.
Troubleshooting: Quickly identify slow-running regions on a page, making it easier to pinpoint and tune problematic queries.
User Communication: When users request large or complex datasets, the timing info helps explain longer wait times.
Edit the Report Region:
In Page Designer, select the report region you want to monitor.
Add #TIMING# along with other substitution strings to the Footer:
Fetched #ROWS_FETCHED# rows of #TOTAL_ROWS# in #TIMING# seconds
Special Built-in Region Substitution Strings
| Substitution String | Description |
| --- | --- |
| #ROWS_FETCHED# | Number of rows fetched by the report |
| #TOTAL_ROWS# | Total number of rows in the query |
| #TIMING# | Time taken to render the region (in seconds) |
| #APEX$ROW_NUM# | Row number in Classic Reports |
Save and Run:
Save your changes and run the application. The footer will now display real-time execution metrics every time the report runs.

Works Per Region: #TIMING# is available only for report regions, not for the entire page or non-report regions.
Debugging: For deeper performance analysis, use APEX’s debug mode (LEVEL9) to see detailed execution times for every component.