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

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

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

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

PHP

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

Q&A

解決済

3回答

217閲覧

mysqlクエリのチューニング

Zac1988

総合スコア30

MySQL

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

PHP

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

0グッド

0クリップ

投稿2017/11/29 02:32

標記の件、1分半から2分強くらいかかるクエリがあるのですが、クエリの最適化をするのが一番いいと思うのですが、迅速な対応を求められているため、キャッシュを利用して対応するということになりました。

5分毎に最新のクエリ結果を取りに行くような実装をしたいのですが、サンプルコードやmysqlの設定・記事等ご教示いただけると幸いです。

よろしくお願いいたします。

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

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

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

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

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

maisumakun

2017/11/29 02:36

「PHP側で使用しているフレームワーク」は何でしょうか?
Zac1988

2017/11/29 02:37

codeigniterです
guest

回答3

0

ベストアンサー

ここで聞かずとも検索したらいくらでも参考ページは出てくると思いますが…
https://qiita.com/ryurock/items/9d433a8fd9b0be0ad0bb
https://qiita.com/ryurock/items/9f561e486bfba4221747

ただ、キャッシュは万能ではないです。恒久的に変更のかからないデータに対してキャッシュを設定するのは容易いですが、頻繁にINSERTやUPDATEされるテーブルとJOINしているようなクエリである場合、キャッシュがまともに働かず、動作改善に繋がらないことも大いにあります。

まず速度改善で真っ先に見るべきは「INDEXが正しく効いているか」です。「そもそもINDEXを貼っていない」「INDEXを正しく扱ったクエリになっていない」「JOINしたものがINDEXと紐付いていない」などが考えられます。そういったミスが修正されると、クエリ速度がいきなり劇的に向上するので、そこを確かめるべきだと思います。
http://d.hatena.ne.jp/yellowpepper/20120722/1342963040

投稿2017/11/29 02:41

masaya_ohashi

総合スコア9206

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

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

0

MYSQLならEXPLAIN文にかけて実行計画を取得して、
効率の悪いところをあぶり出してインデックスを最適化したり構造を最適化したりするんじゃないでしょうか。

5分おきにリフレッシュするクエリー自体も処理が重いようであれば、
根本治癒した方が得策だと思います。

データベース周りだけでも専門家や経験者を加えるなど。

投稿2017/11/29 03:17

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

サマリーテーブルを作るイメージですかね

SQL

1insert into サマリー select ・・・ from ・・・

で、流し込めると思います。
ただselect句の抽出項目とサマリーテーブルの項目数を合わせる必要があります
合わない場合はinsert into サマリー(カラム1,カラム2,・・・)など
適合するカラムを列記してください

投稿2017/11/29 02:39

yambejp

総合スコア114572

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

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

yambejp

2017/11/29 03:13

ちなみに2分かかるクエリーを5分毎に発行するとなると RDBの稼働率を相当消費するので実働には耐えないと思います slowクエリを探して高速化を図る必要があります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問