Как оптимизировать/ускорить сортировку QuerySet?
Решение:from django.db.models import Count

interests_ids = u.interests.values_list('id', flat=True) # select ids of incoming user interests
suggestions = User.objects
                  .exclude(id=u.id) # exclude current user
                  .filter(is_verified=True) # filter only verified users
                  .filter(interests__id__in=interests_ids) # select users based on common interests
                  .annotate(interests_count=Count('interests')) # count numbers of interests for each user after filtering
                  .order_by('-interests_count') # order users by max common interests
Ну вы на каждого узера делает подзапрос - дико медленно. Посмотреть все запросы к БД можно с дебаг тулбара habrahabr.ru/post/50221 (увидите МНОГО интересного)
а что бы не тянуть в подзапросах используйте prefetch_relatedqueryset = User.objects.custom_filter(is_verified=True).prefetch_related('interects').order_by('-date_joined')