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:
@@ -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
|
||||
|
Reference in New Issue
Block a user