Open
Description
Problem: Today, rendering the audit log on dev.coder.com takes over 1 minute for the first page.
When the audit log grows to a significant number of rows (currently 970714
entries at the time of writing for dev.coder.com), the pagination causes it to become slow.
The main culprit is the "total" count (COUNT(audit_logs.*) OVER () AS count
) which converts the query from rendering N first results to reading the entire table as the count is based on applied filters.
Simply changing this out for (SELECT COUNT(*) FROM audit_logs) AS count
makes the query instant, but of course, incorrect.
Solution: We must figure out a way to optimize the GetAuditLogsOffset
query to show results faster.