質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

5回答

8671閲覧

php MySQL 高速化のために意識していること

sin1999

総合スコア27

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

9クリップ

投稿2015/06/01 00:33

Php MySQL でシステムを開発する時、高速化のために意識されていることがあれば教えてください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

こんにちは。

自分は

  • SQLがきちんとインデクスを使用しているか(Tableを全スキャンしていないか)
  • DBアクセス回数を最小にする(1回でまとめて値をとれないか考える)
  • 条件判定を極力少なくする(同じ条件で分岐するものはなるべくまとめる)
  • 関数を呼び出した結果で判定させる場合、if()内などで呼ばず一度変数に格納する(同じ処理をさせない)

を特に意識してコーディングしています。

PHPやMySQLでは開発したことないですが、たぶん全般的に言えるのではないかなと思います。
後のほうは、ちょっと細かい部分なので大差ないかもしれませんが・・・ ^^;

投稿2015/06/01 01:35

kaputaros

総合スコア1844

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

MySQLに限らず、RDBを使うときは、できる限りSQLで処理すること。
SQLでできることをPHP側で行うと、ほぼ遅くなりますし、【DBサーバの負荷】も高くなります。

http://d.hatena.ne.jp/Sikushima/20110809/1312871002

基本的に、PHPで処理することでDBサーバの処理を肩代わりできるのは、四則演算と最後のソートだけです。

投稿2015/06/01 00:59

kantomi

総合スコア295

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sin1999

2015/06/01 02:04

ありがとうございます。DBでできることはDBでやるようにします
guest

0

こんにちは。

phpやMySQLに限らず、RDBを利用したシステム構築全般に言えることですが、
SQLのアクセスプランを確認し、想定通りのインデックスが利用されているかを私ははじめに確認します。

投稿2015/06/01 00:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sin1999

2015/06/01 02:04

ありがとうございます。インデックス意識します
guest

0

アプリが遅いときは大概クエリが問題なので、クエリに問題がないかチェックするのが最も大切だと思います。基本的なとこですが、
○select *としてないか。select c1,c2,c3とした方が速い
○explainを叩いて、indexが効いているかどうか。(フルスキャンになっていないかどうか)
○indexを貼るカラムは適切かどうか
○where句で指定しているカラムは行数が少ない方から指定しているかどうか
○APCやmemcachedをきちんと導入しているか
とかだと思います。

投稿2015/06/01 16:02

imamoto_browser

総合スコア1161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

MySQLでSQLを実行するときには、SQL文のテーブル名やカラム名を逆クォートで囲むと早くなると最近知りました。
それくらいですかね。
もちろんインデックスとかも意識しますが・・・

投稿2015/06/01 01:33

orange0190

総合スコア1698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sin1999

2015/06/01 02:05

クオートで囲うのやってみます。ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問