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

DjangoPostgresArrayFieldと1対多の関係

    配列フィールドを使用する場合

    • DBの各行のサイズは少し大きくなるため、Postgresはより多くのトーストテーブルを使用することになります( http://www.postgresql.org/docs/9.5/static/storage-toast.html
    • 特にdeferを使用しない限り、行を取得するたびに ( https://docs.djangoproject.com/en/1.9 / ref / models / querysets /#defer )フィールド、またはonlyを介してクエリから除外します 、またはvalues または何か、あなたはその行を反復するたびにそれらすべての値をロードするコストを支払います。それが必要な場合は、そうしてください。
    • その配列の値に基づいてフィルタリングすることは可能ではありませんが、Django ORMは、M2Mテーブルの場合ほど明確にはなりません。

    M2Mを使用する場合

    • これらの関連する値をより簡単にフィルタリングできます
    • これらのフィールドはデフォルトで延期されます。prefetch_relatedを使用できます それらが必要な場合は、それらの値のサブセットのみをロードしたい場合は空想になります
    • キーと追加のIDフィールドがあるため、M2Mを使用するとDBの合計ストレージがわずかに増加します
    • この場合の結合のコストは、キーがあるため完全に無視できます。

    個人的にはM2Mテーブルを使用すると思いますが、特定のアプリケーションはわかりません。大量のデータを処理する場合は、代表的なデータセットを取得して、両方の方法をテストする価値があります。




    1. PostgreSQLの日付から曜日名を取得する

    2. Scala Sparkタイプの不一致が見つかりましたユニット、必須rdd.RDD

    3. すべてのAlfrescoのファイル(Postgres SQL)に関する情報を一覧表示するにはどうすればよいですか?

    4. CreateTableDefとリンクするときに主キーを設定する方法