2019年06月10日

webの辰人

WordPressなどで遅くなってきたなと感じたら

MySQL

WordPressなどでも使われているMySQL。
データ件数が増えていくと、結構遅くなったりしますね。
より処理性能のよいサーバーに乗り換えるなど対策はいろいろありますが、
まずサーバを増強やチューニングする前に、
PHP処理やクエリなどを見直すと速度改善が可能かもしれません。

ちょっと専門的な話になりますが、
チューニング以外で軽く思いつくものを書いてみたいと思います。
?

・INDEXを貼るカラムは適切かどうか

そもそもの問題になってきますが、
検索に頻繁に利用するカラムについてはインデックスを適切に張る必要があります。
間違ってもすべてのカラムに張るなんてことはやめておきましょう、激重になります。

・SQL検索条件にインデックスを使用しているか

検索条件にインデックスを利用せずTABLE全件検索を行っていませんか。
速度改善のために適切なインデックスを張ったカラムを利用しましょう。

・無駄なカラムの読み込みを行っていないか

SELECT * として、カラムの内容を全て読み込んでいないか。
SELECT `XX1`,`XX2`,`XX3`と、指定してあげた方がもちろん速いです。
不必要なカラムは余計な処理を招くだけですので、必要なものだけ呼んできましょう。

・SQL文にクォートをつけ忘れていないか

クォートをつけずとも利用は可能ですが、しっかりつけましょう。
面倒だとは思いますが、パフォーマンスに多大な影響を与えます。
SQL文のフィールド名、検索語など解釈に時間がかかるため、
クォートにより判定のスピードをあげましょう。
数十万件のデータ読み出しで5000倍ほどの開きも出てきます。

・必要な行数のみフェッチしているか

HTML上で利用するデータのリストなどはLIMITをかけて件数制限をしましょう。
LIMITをかけずに数十万件のデータを読み込むのは非常に効率が悪いです。
使うものだけ呼んでくるのがスマートです。

・DBアクセス回数を最小にしているか

何度も、何度も同じテーブルにアクセスして違うデータを取ってくるのは非効率的です。
1回で複数の値を取る方法がある場合はそちらを選択しましょう。

・WHERE句 条件判定を極力少なくしているか

設計の問題もありますが、同じ条件で分岐する場合は複数書く必要もありません、
必要なものだけ書き、判定を極力少なくしましょう。

・WHERE句 で指定するカラムは行数が少ない方から指定しているか

WHERE句 判定の順にも気をつけましょう、先判定で行数が少ない方を優先で書きましょう。

・できる限りSQL側で処理を行っているか

PHP側のロジックでSQLができることをでカバーすると、ほぼ遅くなります。
設計にもよりますが、どちらに処理をさせるかは見極めをしっかりしましょう。
DBサーバの処理を肩代わりできるのは、四則演算と最後のソートだけだそうです。
?

まとめ

WordPressは、制作者の作業工数を無視すれば、無料でもそれなりのWEBサイトを構築できるため、とても利便性の高いサービスと言えます。しかし上記のように処理速度向上など、素人ではなかなか手が出せない部分があるのも事実です。

表示速度はSEOでも大事になってくる部分。

企業でのWEBサイトリニューアルの際は、WordPressありきではなく、その点も考慮にいれて比較検討することをお勧めします。

株式会社AliveCastの独自CMS=「WMS(ウェブ・マネジメント・ステム)について詳しくはこちら↓
https://www.alivecast.co.jp/page/wms-standard.html