はい、平らなテーブルはまだ物です。「ストア」->「構成」->「カタログ」->「ストアフロント」から製品およびカテゴリーのフラット表を有効にできます。
なぜフラットテーブルが必要なのですか?
大規模なカタログデータのパフォーマンスが大幅に向上します。クライアントの1つには5つのカテゴリと約250の製品しかないので、フラットのオン/オフは関係ありません。800のカテゴリと17000の製品と5つのマルチストアがある別のストアに切り替えたとき、それは本当に重要でした。データベースで何が起こっているかに気付き始めると、パフォーマンスが向上します。複数のWebサイトがある場合、データベースは次のようになります。
インデックスであっても、テーブルサイズが大きくなると、結合のポイントが非常に高くなります。フラットテーブルはJOINを削減(排除ではない)します。
それらはいつ作成または更新されますか
で完全なインデックス再作成を行うと、フラットテーブルが再生成されますbin/magento indexer:reindex
。製品またはカテゴリの更新時に更新されます。関連する行のみが更新されます。
フラットテーブルは生成されません setup:di:compile
**どの属性がフラットテーブルに入りますか?(およびいくつかの制限)**
簡単な答えは、製品リスト(リスト+階層化ナビゲーション)で使用されるすべての属性です。属性ストアフロント設定は、属性をフラットテーブルに含めるかどうかを決定します
以下で説明する制限のため、すべての属性がフラット化されるわけではありません。
フラットテーブルの制限
最後に、これらのフラットテーブルには、mysqlによって課せられる1つの制限があります。テーブルには行サイズと列サイズの制限があります。mysqlテーブルの制限について詳しく読むことができます。
<max_index_count>64</max_index_count>
module-catalogのconfig.xmlにこの興味深いノードがあります。
お役に立てば幸いです。