学びガジェットWeb運営HTML・CSSSEOWordPressウェブサービスサーバーツール・お役立ちプログラミング【お試し無料】本を、聴こう。プログラミング<景品表示法に基づく表記>本サイトには広告が含まれる場合があります。MySQLのlimitを使用した場合、オフセット部分が増えるとパフォーマンスが低下する場合の対処方法メモ。データベースからlimit指定で必要な情報を抜き出すのは便利ですが、インデックスが使われていなかったりして激重になるケースもよく見かけます。自分自身の勉強も兼ねて大量データに対するlimitの使い方を色々調べてみました。まとめまずはlimitの処理内容を理解する例文からlimitの内部処理がどうなっているのかを見てみましょう。10;上記の場合「データを100から10個だけ取得」ではなく「110個データを取得してから先頭から100個を捨てる」という処理が行われます。初心者がMySQLのlimitで重いと勘違いしやすい部分でしょう。desc;limitだけで全ての処理を行っているようなプログラムを見かけますが、適した関数を選択することでパフォーマンスの維持に繋がりますね。BY句の両方で同じカラムを指定することが必要になりますので、柔軟な利用には適していないかもしれません。大量データのオフセットのパフォーマンスそれでは100万件以上あるデータを取り扱う場合で見ていきます。100万件の後半を取得する処理をみてみます。前述した通り100万件取得して99万9990件を捨てる処理になってしまっているということですね。念のため100万件の前半をオフセットで取得してみましょう。sec)本来はこのぐらい早くないとダメですよね。対処方法プライマリキーを使って条件を絞る!番号に抜けがない時に使える小技ですね。sec)圧倒的にlimitのパフォーマンスが上がりました。by」を付与して使っても問題ありません。2010-06-12AmazonKindle楽天ブックスまとめMySQLで大量データを取り扱う局面ではこういった小技を知っておかないとサーバー処理はパンクしてしまいます。逆に数百件程度なら、目に見えるパフォーマンス低下が起こらないので、無駄な処理に気づきにくいかもしれません。インデックスやプライマリ、並べ替えなどクリーンにガシガシMySQLを使っていきたいですね。今日も知識欲は止まらない。LINKrockets関連記事PHPでランダムに範囲内から重複しない数字を取り出す指定した範囲の中から、重複しない数字をランダムに取り出すPHPです。単純にランダムに取得していくと、重複する場合がありますが、今回は...PHPなどでDB不要のCMSブログがまだまだ使えそうデータベースまで利用してわざわざ作るほどでもないブログや、データベースが使えないサーバーだったり、とにかく軽量化されたブログを目指したり...PHPで画像ダウンロードのボタンでリンクする方法PHPを利用して画像をダウンロードさせるボタンを作成する方法メモです。リンクボタンをクリックすると保存ダイアログが表示されて、ダウン...PHPでスマホのUAからキャリア判別する唯一の方法PHPを使ってスマートフォンのUserAgentからキャリアを判別するたった一つの方法メモです。1時間前」を取得しよう!PHPのdate関数を使えば自分の取得したい日付を1行でズバッと指定できます。簡単すぎて、プログラムというよりは言葉で伝えてあげ...PHPでタイムスタンプを変換して日付を表示するPHPでタイムスタンプへの変換とタイムスタンプからの変換メモです。データベースの日付型からの出力などで使ったり、xmlやRSSでの日...JavaScriptでUA判別してスマホとタブレットを振り分ける方法JavaScriptを使用してUAでiPhoneやAndroidのスマホを判定したり、増加傾向にあるタブレットを判別する方法メモ。U...ガラケーで画像やデコメを再配布不可など「ファイル制限あり」にする方法ガラケーで画像の転送不可設定をする方法についてのまとめです。メモ制限・キャプチャ制限などの対策と方法です。array」が出たら確認したいポイントをまとめました。いうエラーの原因と対処方法メモです。LINKAbout何これ??どっちがいいの?という知識欲が止まらない性分の「ロケッツ」です。ウェブ業界に住み着いて長いです。靴に例えると78足ほど履き潰したぐらいです。本質的な健康オタクです。