DB設計を見直してEC-CUBEを高速化する
EC-CUBEのDB設計は、お世辞にもきれいとはいえない。
MySQLでいうと、文字列型はすべてTEXT型になっている。
インデックスすらあまり使われていない。
dtb_session の sess_id は一意なはずなので、ユニークにしたほうがいいと思います。
プライマリキーに変更する。
ALTER TABLE `dtb_session` ADD PRIMARY KEY ( `sess_id` ( 32 ) ); ALTER TABLE `dtb_session` DROP INDEX `dtb_session_sess_id_key`;
またテーブルやカラムの照合順序は、データベースの照合順序が継承される。
もし照合順序が utf8_general_ci だったり utf8_bin となっている場合は、utf8_unicode_ci に変更したほうがいい。
特に大文字、小文字の区別をする必要のあるカラムはないと思う。
[参考記事]utf8_unicode_ci
郵便番号検索は、検索に1.7935秒かかる。
ここで郵便番号のカラムに、インデックスをはると
ALTER TABLE `mtb_zip` ADD INDEX `zipcode` ( `zipcode` ( 7 ) );
0.0008秒まで高速化される。
またこの検索のコード部分
/data/class/pages/LC_Page_InputZip.php
$sqlse = "SELECT state, city, town FROM mtb_zip WHERE zipcode = ?";
EC-CUBEでは重複する郵便番号を考慮していないので、ここは
$sqlse = "SELECT state, city, town FROM mtb_zip WHERE zipcode = ? LIMIT 1";
のように、LIMITは付けておきたい。
関連記事
- PostgreSQLでERROR: duplicate key value violates unique constraint "hoge_pkey" DETAIL: Key (id)=(10) already exists.と出る場合
- PostgreSQLで自動採番をするシーケンス(sequence)とは【AUTO INCREMENT】
- EC-CUBE2系で商品を大量にカートに入れると注文情報が抜けたりカートが消えたりする
- EC-CUBEのダウンロードページ(過去のバージョン)
- 新規ページを追加するとSC_Utils_Ex::sfChangeCheckBox()のエラーが出るときの対処法
- PostgreSQLからMySQL、MySQLからPostgreSQLの変更
- EC-CUBEのサーバ移行の方法
- EC-CUBEのバックアップ機能とリストア
- EC-CUBEでMySQLデータベースのデータ取得で文字化けするときの対処法
- ページごとのスタイルシート、JavaScriptを指定する方法
- テンプレートの編集
- カテゴリ名など文字列を丸めると文字化けする EC-CUBEのバグ
- 基本的な特徴
- 郵便番号データの登録/更新
- インストール 初期設定
- EC-CUBE
- MySQL MariaDB
- symfonyのORマッパ(Propel、Doctrine)
- Zend_DBのSELECTメソッドのまとめ
- PDO_MYSQLをインストールする方法
- MySQLのインストール
- 『Table is marked as crashed and should be repaired』の修復方法
- Symfony PropelでのMySQLの設定方法
- レコード挿入時の #1364 - Field doesn't have a default value
- Seedの実行順(外部キー制約などを先に実行させる方法) Foreign key violation
- SQL Buddy ブラウザベースのMySQL管理ツール
- Ruby on Railsのマイグレーションの型とMySQLの型の対応表
- MySQLのソケットエラー
- MySQLでdatetime型(日時)を日付で抽出するSQLの速度比較
- MySQLで文字化けを防ぐ方法
- LIMITで件数制限をしつつ、全件数を取得する方法 SQL_CALC_FOUND_ROWS FOUND_ROWS()
スポンサーリンク