スロークエリとは?実行が遅くサイトを詰まらせる問い合わせをやさしく解説
「サイトが重い」と言われ、原因がなかなか見つからないとき
ある時間帯だけ、サイトがやけに重い。サーバーを増やしたわけでもアクセスが激増したわけでもない。 ログを見ても明確なエラーはない。「どこが遅いんだろう」と途方に暮れる——。
そんなときの有力な容疑者が、スロークエリです。
スロークエリとは?ひとことで言うと
スロークエリとは、データベースへの問い合わせ(クエリ)のうち、実行にとても時間がかかるもののことです。
ざっくり言うと、「データの取り出しに時間がかかりすぎて、後ろの処理を待たせてしまう重い注文」です。 サイトは多くの場合、データベースに「この条件のデータをちょうだい」とお願いして動きます。その一つひとつが速ければ快適ですが、一部に極端に遅いものがあると、そこが詰まってサイト全体が重くなります。

現場ではどこで使う?
保守運用の現場では、こんな場面で関わります。
- 「サイトが重い」の原因を切り分けているとき
- 特定のページや一覧だけ、表示にやたら時間がかかるとき
- データが増えてきて、前より動きが鈍くなったと感じるとき
- 500番台のエラーや、タイムアウトの背景を調べているとき
サーバーやネットワークに問題が見当たらないとき、データベース側を疑う入り口になるのがスロークエリです。
なぜ大事なのか
スロークエリを見つけられると、「サイトが重い」の原因を的確に絞れます。 体感の遅さは、サーバー・ネットワーク・データベースなど、いろいろな場所で起こります。そのなかでも、データが増えるほど遅くなるのがクエリの特徴で、最初は問題なくても、運用が長くなるにつれて表面化します。遅いクエリを特定できれば、対策(後述の改善)も具体的になり、サーバー増強のような大きな手を打つ前に、ピンポイントで直せることがあります。
具体例で見る
たとえば、注文一覧のページだけが極端に遅いとします。
データが少ないうちは一瞬で表示できても、件数が何十万件に増えると、毎回すべてを順番に探すような問い合わせは時間がかかります。 多くのデータベースには「実行に時間がかかったクエリを記録する」仕組み(スロークエリログ)があり、これを見ると犯人が分かります。改善の方法はデータベースごとに違うので、具体的な確認・設定手順は使っている製品の公式ドキュメントで確認しましょう。
つまり現場では?
スロークエリと向き合うということは、「どの問い合わせが、どれくらい遅いか」を記録から見つけ、影響の大きいものから手を入れていく作業です。やみくもに全体を速くしようとするより、いちばん詰まっている一点を見つけるほうが、効率よく改善できます。
知らないとどう困る?
スロークエリの存在を知らないと、「サイトが重い=サーバーが非力」と思い込み、増強にお金をかけても改善しない、ということが起きます。 原因が一部の遅い問い合わせなら、サーバーを増やしても詰まりは残るからです。さらに、遅いクエリが重なると処理が待たされ続け、最終的にタイムアウトやエラーにつながることもあります。
よくある勘違い
- 遅さの原因は「サーバーの性能」だけではありません。一部の問い合わせが重いだけのこともあります。
- 最初から遅いとは限りません。データが増えてから急に表面化するのが、クエリの遅さの特徴です。
- 全部のクエリを速くする必要はありません。影響の大きい一部を直すだけで、体感は大きく変わります。
明日やるならこれ
自分の担当サービスで「いちばん遅いと感じるページ」をひとつ思い浮かべ、そのページが裏でデータベースに何を問い合わせているかを調べてみましょう。あわせて、使っているデータベースに遅いクエリを記録する設定があるかを確認すると、改善の入り口が見つかります。
ひとことで言うと
スロークエリとは、実行に時間がかかりすぎて、サイト全体を詰まらせてしまう問い合わせのことです。




