Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

デフォルトでインデックスを付与した方が良さそうなフィールドにIndexの追加 #1805

Closed
nanasess opened this issue Oct 4, 2016 · 2 comments
Labels
enhancement 機能追加
Milestone

Comments

@nanasess
Copy link
Contributor

nanasess commented Oct 4, 2016

調査結果の詳細

dtb_customer

  • email
  • create_date
  • update_date
  • last_buy_date
  • buy_times
  • buy_total

dtb_order

dtb_product_class

  • product_code(dtb_product_class.product_code のインデックス #1038) 現状は LIKE のみなので INDEX が効かない

  • price02

    ## 以下の修正もセットで
    --- a/src/Eccube/Repository/ProductRepository.php
    +++ b/src/Eccube/Repository/ProductRepository.php
    @@ -109,7 +109,7 @@ class ProductRepository extends EntityRepository
                 //@see http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html
                 $qb->addSelect('MIN(pc.price02) as HIDDEN price02_min');
                 $qb->innerJoin('p.ProductClasses', 'pc');
    -            $qb->groupBy('p');
    +            $qb->groupBy('p.id');
                 $qb->orderBy('price02_min', 'ASC');
                 // 新着順
             } else if (!empty($searchData['orderby']) && $searchData['orderby']->getId() == '2') {

dtb_page_layout

  • url
@nanasess
Copy link
Contributor Author

nanasess commented Oct 6, 2016

ソートキーとなっているフィールド(主に update_date)にもインデックスを付与すると良いと思いますが、 ORM の出力する SQL では、インデックスを効果的に利用してくれない模様(PostgreSQL9.2 にて検証)
MySQL では、利用されるケースもある。
根本的には、生の SQL を書いてチューニングするしかないと思われる

@Yangsin Yangsin added this to the 3.0.12 milestone Oct 13, 2016
@nanasess
Copy link
Contributor Author

調査結果を以下にアップしておきました
https://doc.co/mP7jxn

nanasess added a commit to nanasess/ec-cube that referenced this issue Oct 14, 2016
- EC-CUBE#1805

- dtb_customer
  - email
  - create_date
  - update_date
  - last_buy_date
  - buy_times
  - buy_total

- dtb_order
  - pre_order_id(EC-CUBE#1036)
  - order_email
  - order_date
  - payment_date
  - commit_date
  - update_date

- dtb_product_class
  - price02
  - stock, stock_unlimited

- dtb_page_layout
  - url
@Yangsin Yangsin closed this as completed Oct 27, 2016
@Yangsin Yangsin changed the title デフォルトでインデックスを付与した方が良さそうなフィールド デフォルトでインデックスを付与した方が良さそうなフィールドにIndexの追加 Oct 27, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement 機能追加
Projects
None yet
Development

No branches or pull requests

2 participants