VIEW MORE

BLOG スタッフブログ

BLOG 2018.12.06
MySQLのパフォーマンスに気をつけよう

伊藤

こんにちは。
AIコミュニケーションの伊藤です。

今年も様々なことがありましたが、無事年末を迎えられて一安心です。
次は、無事年始を迎えられるように祈りましょう。

今日の話題はPHP+MySQLについてです。

ウェブでシステムを作るなら、避けては通れない話題ですよね。
コーダーデザイナーの範疇でもちょっとした管理画面を作ったことがある、という方も見えるのではないでしょうか。

しかし、システムが複雑化するにつれて「ちょっとした書き方」ゆえの落とし穴も発生します。
そう、コツを知らない書き方をしているとドンドンシステムが重くなってしまうのです。

落とし穴に落ちないために

■SQL文のカラム名、テーブル名を指す箇所はバッククォートで囲む
ex. $sql = “SELECT * FROM `test` WHERE `state` = 2 ORDER BY `id` ASC”;

SQL文はうまいことになっていて、ある程度ざっくり書いてもシステム上で補完され、正しいデータを持ってきてくれます。
非常に嬉しいですがこれには落とし穴があります。
それは、自動的に補完がなされるため、引っ張ってくるデータが複雑になればなるほど重くなってしまうということです。
ちょっとしたシステムだと気になることはほとんどありませんが、データ数が膨大になってくると無視できない状態になってしまいます。

■「*」と書くのをやめる
ex. $sql = “SELECT `id`,`title`,`state` FROM `test` WHERE `state` = 2 ORDER BY `id` ASC”;

最初、本などで習うときは、「SELECT * ~~~」と言う風に「*」が使用されているので、とりあえず毎回「*」を書いている人もいるのではないでしょうか。
しかし、これも落とし穴の一つ。

*は一切合切テーブル上のデータを全て拾ってくるため、データ数が膨大になってくるとこれもかなり、やらかしてくれます。
こちらも、ちょっとしたシステムだと気になることなどほぼないです。
ただ、少し大きめのシステムを考えているときは意識して、しっかりと必要なデータのみを抽出するようにしたいですね。

ゆく年くる年

いかがだったでしょうか。
少し気を付けるだけでシステムの快適さは大きく変わります。
小さなシステムを作るときも普段から気を付けておくと楽かもしれません。
では、私のブログ記事は次回は来年になります。

良いお年を!

一覧へ戻る