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

テーブルが多すぎます。 MySQLは結合で61個のテーブルしか使用できません

    EAVデザインを使用していて、可変数の属性から単一の行を再構築しようとしています。これは、EAV設計を使用して遭遇する多くの地雷の1つを示しています。つまり、1つのSQLクエリで実行できる結合の数には実際的な制限があります。

    特にMySQLでは、ご存知のように厳しい制限があります。ただし、他のRDBMSブランドでも、結合のコストはテーブルの数に対して幾何学的であるため、効果的な制限があります。

    EAVを使用する場合は、SQLで行を再構築しないでください 従来のデータベース設計であるかのように。代わりに、エンティティIDでソートされた行として属性をフェッチします。次に、アプリケーションコードでそれらを後処理します。これは、1つのステップでデータをダンプできないことを意味します。つまり、属性行をループするコードを記述し、データを出力する前にデータの各行を再編成する必要があります。

    EAVは便利なデータベース設計ではありません。それを使用することには多くの費用のかかる欠点があり、そのうちの1つにぶつかっただけです。

    http://www.simple-talk.com/opinion / opinion-pieces / bad-carma / EAVの使用が1つのビジネスをどのように運命づけたかについての素晴らしい話のために。

    また、http://en.wikipedia.org/wiki/Inner-platform_effect> EAVはこのアンチパターンの例だからです。

    カタログ内の製品ごとに動的な属性のセットをサポートする必要があることを理解しています。しかし、EAVはアプリケーションを強制終了します。動的属性をサポートするために私が行うことは次のとおりです。



    1. Entity Framework Core 2.0:抽象基本クラスを1回構成する方法

    2. ORA-24550:シグナルを受信しました:[si_signo=6]エラー

    3. DETERMINISTIC、NO SQL、または宣言内のREADS SQL DATAであり、バイナリロギングが有効になっています

    4. phpカテゴリ、サブカテゴリツリー