2019年06月10日

webの辰人

WordPress(ワードプレス)などCMSで遅くなってきたなと感じたら

MySQLの処理速度を改善するためのテクニックを紹介します。適切なインデックスの使用、SQL文の最適化、無駄なカラムの読み込みを避ける方法など、専門的な対策を解説します。WordPressのサイト運営者必見の内容です。

MySQL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

まとめ

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

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

企業でのWEBサイトリニューアルの際は、その点も考慮にいれてシステムに強い会社を比較検討することをお勧めします。