カスタマイズされたCustomer Gridにより、MySQLテーブルスキャンとファイルソート、つまりパフォーマンスが低下する
編集:私は元々この質問をStackoverflowに投稿しましたが、完全に回答されることはありませんでした。私はここに投稿しています。これは、大規模なテーブルスキャンの理由と、(できれば)最小限のコア変更でこれを防ぐためのあらゆる手段を明らかにすることを期待しています。 Magento Enterprise。1.10.1.1。顧客と住所のデータセットはセミラージ(125k +)であり、CSRはこのグリッドにあることがよくあります(一度に25+以上の同時ユーザー)。 これは、コレクションがCustomer Grid.php Blockファイルで生成されているコードスニペットです。主にコレクションに属性を追加するだけで、特別なことや異常なことは何もありません。 $collection = Mage::getResourceModel('customer/customer_collection') ->addNameToSelect() ->addAttributeToSelect('email') ->addAttributeToSelect('group_id') ->addAttributeToSelect('prod_codes') ->addAttributeToSelect('last_called_date') ->addAttributeToSelect('time_zone') ->addAttributeToSelect('salesrep') ->addAttributeToSelect('do_not_call') ->addAttributeToSelect('club_member') ->addAttributeToSelect('call_back_date') ->addAttributeToSelect('marketing_code_outcome') ->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left') ->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left') ->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left') ->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left'); $this->setCollection($collection); このクエリを生成します。これは、顧客グリッド内での動作が非常に長くなり、読み込み時間が非常に長くなります。 SELECT e . *, _table_prefix.value AS prefix, …