1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Replace distinct annotations with subqueries for much better performance

This commit is contained in:
Jeremy Stretch
2019-04-12 17:18:04 -04:00
parent a46b43bff6
commit ad4d23fa20
2 changed files with 26 additions and 7 deletions

View File

@@ -66,9 +66,15 @@ class AggregateViewSet(CustomFieldModelViewSet):
#
class RoleViewSet(ModelViewSet):
prefix_count = Prefix.objects.filter(
role=OuterRef('pk')
).order_by().values('role').annotate(c=Count('*')).values('c')
vlan_count = VLAN.objects.filter(
role=OuterRef('pk')
).order_by().values('role').annotate(c=Count('*')).values('c')
queryset = Role.objects.annotate(
prefix_count=Count('prefixes', distinct=True),
vlan_count=Count('vlans', distinct=True)
prefix_count=Subquery(prefix_count),
vlan_count=Subquery(vlan_count)
)
serializer_class = serializers.RoleSerializer
filterset_class = filters.RoleFilter