Significantly improve performance of the datagrid paginators.

Review Request #13374 — Created Oct. 23, 2023 and submitted — Latest diff uploaded

Information

Review Board
release-5.0.x

Reviewers

This updates the datagrid querysets to set distinct=False and to omit
with_counts=True. This simplifies the base querysets for all the
datagrids, ensuring that the datagrid code can generate a slim and
efficient queryset for computing total item counts for pagination. Prior
to this, the querysets were in the form of:

SELECT COUNT(*) FROM (SELECT DISTINCT ...);

That was causing all results to be fetched and then for a total count to
be computed based off that. Certainly not efficient, and the source of
problems in the past for some users.

The data queryset still uses distinct, which is set by the datagrid code
itself. Although we can now turn this off, we are going to keep it on
for now, with plans to test removing the distinct flag for querysets in
Review Board 7.

Unit tests pass.

Been testing all the datagrids with this change, ensuring that the counts
seem fine and that there are no noticeable regressions.

Commits

Files

    Loading...