• 株式会社AliveCastはプライバシーマークを取得してます。
  • 福岡市インキュベート認定マーク福岡県子育て応援宣言登録マーク
  • 株式会社AliveCastは国の認定を受けた異分野連携新事業(新連携事業)に取り組んでいます。
  • FVM大賞2015 優秀賞 受賞
  • 平成26年度福岡市トライアル発注認定事業者
  • 平成25年度福岡市ステップアップ最優秀賞 受賞
  • 平成25年度九州ニュービジネス優秀賞 受賞
  • JTBビジネスイノベーターズ Travel・Fintechビジネスコンテスト 最優秀賞 受賞
  • AEON Financial Service Innovation 2017 特別賞 受賞
  • 第17回MIT-VFJビジネスプランニングクリニック&コンテスト 正会員特別賞・マイクロソフト賞 受賞
  • 福岡県情報セキュリティ連絡協議会加盟企業
  • 福岡ベンチャーマーケットプレゼン企業
  • 福岡大学共同開発企業
  • 経営革新計画 第1936承認企業
  • 平成23年度九州地域中小企業事業家支援
    お助け隊事業アドバイザー企業
  • 平成23年度福岡市競争入札参加有資格企業
  • 特許第6372856号
  • 特許第6316654号

「プログラマー辰人が、日々感じた事をおくるインターネット初心者向けのコラム」 ・・・かもしれないwebの辰人

2019年6月10日(月曜日)  (伊藤 辰彦)

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

MySQL

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

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


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

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

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

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

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

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

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

・WHERE句 で指定するカラムは行数が少ない方から指定しているか
WHERE句 判定の順にも気をつけましょう、先判定で行数が少ない方を優先で書きましょう。

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

AliveCastIPのみ表示されます

OK

管理側

残り

javascript css html VIEW側

php matchルーチン