検索
ホームページphp教程php手册Limit パラメータを使用して MySQL クエリを最適化する方法

Limit パラメータを使用して MySQL クエリを最適化する方法

Jun 13, 2016 pm 12:26 PM
limitmysql最適化使用パラメータ存在する方法お問い合わせプログラム

数日前、外国人が書いたプログラムを見たことがありますが、そのプログラムは MySQL クエリで Limit キーワードを多用しており、非常に興味を持ちました。なぜなら、私の印象では、Limit キーワードは MySQL データベースでよく使用されているように思えたからです。プログラマーはこれを使用してクエリ ページングを実行します (もちろん、これは優れたクエリ最適化でもあります)。Oracle では通常、
SELECT * FROM ( SELECT a1.*, rownum rownum_
FROM testtable a1
WHERE rownum > 20)
WHERE rownum_ このステートメントは、テーブル内の testtable 20 ~ 1000 レコードをクエリできます。ネストされたクエリが必要ですが、これはあまり効率的ではありません。MySQL の実装を見てみましょう。
SELECT * FROM testtable a1 limit 20,980;
これは、testtable テーブルのレコードに 21 を返します (20 + 980 =)。 1000件のレコード。
実装構文は確かに単純ですが、ここで 2 つの SQL ステートメントの効率について話したい場合、MySQL の Limit オプションを解釈する方法が多数あり、速度の違いがあるため、比較するのは困難です。さまざまな意味で巨大であるため、このステートメントの単純さから誰がより効率的であるかを判断することはできません。
でも、プログラマーにとっては、メンテナンスコストが低いので、シンプルな方が良いんです(笑)。
この Limit の構文について説明します。
SELECT ……. --Select ステートメントのその他のパラメーター
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
ここでの offset はオフセット Shift (このオフセットの開始アドレスは 1 ではなく 0 です。これは間違いやすいです) 名前が示すように、開始点から離れた位置であり、行数も非常に単純です。返されるレコード数の制限。
例: SELECT * FROM testtable a limit 10,20 where ….
これにより、結果は 10 行後に where 条件を満たす 20 個のレコードを返すことができます (10 行自体を含む)。
制約がない場合は、10 ~ 29 行のレコードが返されます。
では、これはテーブル全体のスキャンを回避することとどのような関係があるのでしょうか? 以下は、MySQL マニュアルの Limit パラメータ最適化スキャンに関する説明です:
場合によっては、HAVING を使用する代わりに LIMIT オプションを使用すると、MySQL はクエリを異なる方法で処理します。
l LIMIT を使用して行のサブセットのみを選択する場合、MySQL は通常、完全なテーブル スキャンを実行しますが、場合によってはインデックス (ipart 関連) を使用します。
l LIMIT n と ORDER BY を同時に使用すると、MySQL が条件を満たす最初のレコードを見つけた後、テーブル全体をソートするのではなく、ソートが終了します。
l LIMIT n と DISTINCT を一緒に使用すると、MySQL はレコードを見つけた後にクエリを停止します。
l 場合によっては、GROUP BY は、キーを順番に読み取り (またはキーでソート)、キー値が変わるまで要約を計算することで解決できます。この場合、LIMIT n は不要な GROUP を評価しません。
l MySQL は、n 番目の行をクライアントに送信し終わると、残りのクエリを破棄します。
l そして、LIMIT 0 オプションは常にすぐに空のレコードを返します。これは、クエリをチェックし、結果列の列タイプを取得するのに役立ちます。
l 一時テーブルのサイズは、LIMIT # を使用して、クエリを解決するために必要なスペースの量を計算します。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、