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

データベースのパフォーマンス:列と個別のテーブルでのフィルタリング

    これは、データベース設計でよくある問題です。「アクティブ」ではなくなったレコードを分離するか「アーカイブ」するかという問題です。

    最も一般的なアプローチは次のとおりです。

    • 1つのテーブルのすべてで、必要に応じて注文を「完了」としてマークします。長所:最も単純なソリューション(コードと構造の両方)、優れた柔軟性(たとえば、注文を「復活」させるのが簡単)。短所:テーブルが非常に大きくなる可能性があり、クエリと例の両方で問題が発生します。バックアップ。
    • 古いものをアーカイブしてテーブルを分離します。最初のアプローチから問題を解決しますが、複雑さが増します。
    • 値ベースのパーティショニングでテーブルを使用します。つまり、論理的に(アプリケーションにとって)すべてが1つのテーブルにありますが、舞台裏では、DBMSは、いくつかの列の値に応じて、データを別々の領域に配置します。パーティション化には、おそらく「完了」列または「注文完了日」を使用します。

    最後のアプローチは、最初の2つの優れた部分を組み合わせたものですが、DBMSでのサポートが必要であり、セットアップがより複雑です。

    注:

    「アーカイブされた」データのみを格納するテーブルは、一般に「アーカイブテーブル」と呼ばれます。一部のDBMSは、これらのテーブルに特別なストレージエンジン(MySQLなど)を提供します。これらのエンジンは、変更や挿入が遅くなる代わりに、迅速な取得と優れたストレージ効率を実現するように最適化されています。



    1. mysql_queryの結果の1つの列を配列に取得するにはどうすればよいですか?

    2. なぜActionView::Template ::Error:Herokuでnil:NilClassの未定義のメソッド `name'を取得するのに、ローカルでは取得しないのですか?

    3. DjangoJSONFieldフィルタリング

    4. Java JDBC-レコードが存在しない場合にのみ、データベースにレコードを挿入します