sql >> データベース >  >> RDS >> Mysql

djangoクエリを最適化して、外部キーとdjango-taggitの関係をプルします

    prefetch_relatedを使用することができます タグを取得するには、「tags」プロパティを回避する必要があります。これは、jdiが言うように、これは実際の関係ではなくカスタムマネージャーであるためです。代わりに、次のことができます:

    actions = Action.objects.select_related('reoccurance').filter(complete=False)\ .prefetch_related('tagged_items__tag')

    残念ながら、action.tags.all テンプレートコードでは、プリフェッチを使用せず、独自のクエリを実行することになります。そのため、そこでも「タグ」マネージャーをバイパスするというかなりハッキーな手順を実行する必要があります。

    {% for tagged_item in action.tagged_items.all %}
        <span>{{ tagged_item.tag }}</span>{% if not forloop.last %}, {% endif %}
    {% endfor %}
    

    (編集:「'QuerySet'オブジェクトに属性'prefetch_related'」がない場合は、prefetch_relatedが使用できないバージョンのDjangoを使用していることを示しています。)



    1. ストアドプロシージャの動的カーソル

    2. MySQLmy.iniの場所

    3. mysql SELECT LIKEは、単語全体を変数にのみ一致させる必要があります

    4. SQL Serverの内部:PlanCachingPt。 I –プランの再利用