Настройка скорости для mysql выборки в Django - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть такая модель

class MyJson(models.Model):
    created_at = models.DateTimeField(null=True)
    tweet_status = JSONField()
    is_show = models.BooleanField()
    def __str__(self):    
        return self.tweet_id  
    class Meta:
        indexes = [
            models.Index(fields=['is_show']),
            models.Index(fields=['created_at',])
        ]

class MyJsonSerializer(serializers.ModelSerializer):
    tweet_status = serializers.SerializerMethodField()    
    def get_tweet_status(self,obj):
        return obj.tweet_status

    class Meta:
        model = MyTweet
        fields = ('id','tweet_status','created_at')  

class MyJsonFilter(filters.FilterSet):
    is_show = filters.BooleanFilter(method='is_show_filter')   
    created_at = filters.DateTimeFilter(lookup_expr='gt')

    def is_show_filter(self, queryset, name, value):
        return MyJson.objects.filter(is_show=1)

, тогда я хочу получить 5000 строк из более чем 200000 строк where is_show = 1 order by created_at.

Но это займет более 1 минуты.

Это слишком медленно, я хочу ускорить больше ....

Где шея bottle ??? или где я должен улучшить ??

Я установил is_show и created_at в качестве индекса.

Есть ли какие-либо настройки для этого случая ???

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...