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

Django管理者MySQL低速内部結合

    DjangoORMのINNERJOINの修正を実装しました。これは、INNERJOINで注文する場合にSTRAIGHT_JOINを使用します。私はDjangoのコア開発者と話をしましたが、今のところ、これを別のバックエンドとして行うことにしました。したがって、ここで確認できます: https://pypi.python.org/pypi / django-mysql-fix

    ただし、もう1つの回避策があります。 Jamesの回答の抜粋を使用しますが、select_relatedを次のように置き換えます:

    qs = qs.select_related('').prefetch_related('wheel', 'dealer', 'category')
    

    INNER JOINをキャンセルし、4つの個別のクエリを使用します。1つは車をフェッチし、3つはcar_idを使用します。 IN(...)。

    更新: もう1つの回避策を見つけました。 ForeignKeyフィールドにnull=Trueを指定すると、DjangoはINNERJOINの代わりにLEFTOUTERJOINを使用します。この場合、LEFT OUTER JOINはパフォーマンスの問題なしで機能しますが、私がまだ気付いていない他の問題に直面する可能性があります。



    1. PL / SQLでスレッドを使用できますか?

    2. PostgreSQLで同等のDATEADD

    3. SQLServer2008でパラメーター化されたVIEWを作成する

    4. PostgreSQLクエリで名前付き定数を定義する方法はありますか?