検索
ホームページデータベースSQL[SQL 学習] 順序付きインデックスと順序付けの関係

一般に、order by を実装するには 2 つの方法があります。1 つは、順序付きインデックスを使用して自動的に実装する方法です。つまり、順序付きインデックスの順序性を使用すると、追加の並べ替え操作は必要ありません。もう 1 つは、結果を選択した後に並べ替えることです。 順序付きインデックスを使用するのがもちろん最も高速ですが、いくつかの制限があります。以下のテストを見てみましょう。

テスト データ: Student テーブルには id、sid の 2 つのフィールドがあり、id が主キーです。合計 20W レコードがあり、ID の範囲は 1 ~ 200000、sids の範囲も 1 ~ 200000 です。

最初の状況:

order by フィールドは where 条件にも select にもありません。

sid を zhuyuehua.student から選択します (sid
[SQL 学習] 順序付きインデックスと順序付けの関係

#2 番目のケース:

order by フィールドはありませんwhere 条件ではありますが、select です。

select id,sid from zhuyuehua.student where sid
[SQL 学習] 順序付きインデックスと順序付けの関係

3 番目のケース:

order by フィールドは where 条件にはありますが、select にはありません。

sid を zhuyuehua.student から選択します (sid
[SQL 学習] 順序付きインデックスと順序付けの関係

#4 番目のケース:

order by フィールドは where 条件にはありますが、select にはありません。逆順に並べ替える

sid を zhuyuehua.student から選択します (sid
[SQL 学習] 順序付きインデックスと順序付けの関係

テスト結果:

order by のフィールドは where 条件にも select にもありません。並べ替え操作があります。

order by のフィールドが where 条件ではなく select にあります。ソート操作があります。

order by のフィールドは where 条件に含まれていますが、select には含まれていません。並べ替え操作はありません。

order by のフィールドは where 条件にありますが、select (逆順) にはありません。並べ替え操作はありません。

結論:

order by フィールドが where 条件に出現する場合、ソート操作を行わずにインデックスが使用されます。 その他の場合、order by は並べ替え操作を実行しません。

分析:

order by フィールドが where 条件に出現する場合にのみ、並べ替えを避けるためにフィールドのインデックスが使用されるのはなぜですか。 これは、データベースが必要なデータを取得する方法についてです。
#SQL は実際には 3 つのステップに分割できます。

1. データの取得

2. データの処理

3. 処理されたデータを返す

たとえば、上記のステートメント select sid from zhuyuehua.student where sid
ステップ 1: where 条件と統計情報に基づいて実行を生成します。計画を立ててデータを取得します。

ステップ 2: 取得したデータを並べ替えます。


データ処理 (order by) を実行するとき、データベースはまず最初のステップの実行計画をチェックして、order by のフィールドが実行計画のインデックスを使用しているかどうかを確認します。その場合は、インデックス順序を使用して、並べ替えられたデータを直接取得できます。 そうでない場合は、並べ替え操作を行います。
ステップ 3: 並べ替えられたデータを返します。 ######加えて:

上記の 50,000 データの並べ替えには 25 ミリ秒しかかかりませんでした。並べ替えには多くのリソースが消費されないと思われるかもしれません。ただし、上記の表のデータは順序付けされているため、並べ替えにかかる時間は短くなります。比較的順序付けされていないテーブルの場合、ソート時間は大幅に増加します。また、ソート操作は通常、データベースの CPU 消費量であるメモリ上で実行されますが、CPU の性能が向上したため、通常の数十、数百件のレコードのソートはシステムに大きな影響を与えません。 。ただし、レコード セットが 100 万レコードを超えた場合は、これを行う必要があるかどうかに注意する必要があります。大規模なレコード セットを並べ替えると、CPU オーバーヘッドが増加するだけでなく、メモリ不足によりハード ディスクの並べ替えが発生する可能性があります。ハードディスクが発生する ソート時にパフォーマンスが大幅に低下します。

注: ORACLE または DB2 には、SORT 操作 (前述のメモリ ソート) 用のスペースがあります。たとえば、ORACLE では、SORT_AREA_SIZE などのパラメータの設定が含まれるユーザー グローバル領域 (UGA) です。ソートするデータ量が多い場合、ソートオーバーフロー(ハードディスクソート)が発生し、パフォーマンスが大幅に低下します。

要約:




order by のフィールドが where 条件に出現する場合、インデックスはソートなしで使用されます。より正確には、order by のフィールドは実行プラン内にあります。インデックスを使用する場合、ソート操作は必要ありません。 #この結論は、order by だけでなく、並べ替えが必要な他の操作にも当てはまります。たとえば、
group by、union、distinct
などです。 SQL に関するチュートリアルをさらに知りたい場合は、PHP 中国語 Web サイト
sql ビデオ チュートリアル

に注目してください。


  • [SQL 学習] 順序付きインデックスと順序付けの関係
  • サイズ: 16 KB
  • [SQL 学習] 順序付きインデックスと順序付けの関係
  • サイズ: 16 KB
  • [SQL 学習] 順序付きインデックスと順序付けの関係
  • サイズ: 20.6 KB
  • [SQL 学習] 順序付きインデックスと順序付けの関係
  • ##サイズ: 21 KB

    以上が[SQL 学習] 順序付きインデックスと順序付けの関係の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    学習SQL:課題と報酬の理解学習SQL:課題と報酬の理解May 11, 2025 am 12:16 AM

    学習SQLには、基本的な知識、コアクエリ、複雑な結合操作、パフォーマンスの最適化をマスターする必要があります。 1.表、行、列、さまざまなSQL方言などの基本概念を理解します。 2。クエリに選択されたステートメントを使用するのに習熟しています。 3.結合操作をマスターして、複数のテーブルからデータを取得します。 4.クエリパフォーマンスを最適化し、一般的なエラーを避け、インデックスと説明コマンドを使用します。

    SQL:その目的と機能を発表しますSQL:その目的と機能を発表しますMay 10, 2025 am 12:20 AM

    SQLのコアコンセプトには、CRUD操作、クエリの最適化、パフォーマンスの改善が含まれます。 1)SQLは、リレーショナルデータベースの管理と操作に使用され、CRUD操作をサポートします。 2)クエリの最適化には、解析、最適化、実行段階が含まれます。 3)インデックスの使用を通じてパフォーマンスの改善を実現し、Select*を回避し、適切な参加型とページネーションクエリを選択します。

    SQLセキュリティベストプラクティス:データベースを脆弱性から保護しますSQLセキュリティベストプラクティス:データベースを脆弱性から保護しますMay 09, 2025 am 12:23 AM

    SQLインジェクションを防ぐためのベストプラクティスには、1)パラメーター化されたクエリの使用、2)入力検証、3)最小許可原則、4)ORMフレームワークを使用します。これらの方法により、データベースはSQLインジェクションおよびその他のセキュリティの脅威から効果的に保護できます。

    MySQL:SQLの実用的なアプリケーションMySQL:SQLの実用的なアプリケーションMay 08, 2025 am 12:12 AM

    MySQLは、優れたパフォーマンスと使いやすさとメンテナンスのために人気があります。 1.データベースとテーブルの作成:createdatabaseとcreateTableコマンドを使用します。 2。挿入とクエリデータ:InsertIntoおよび選択ステートメントを介してデータを操作します。 3.クエリを最適化:インデックスを使用してステートメントを説明してパフォーマンスを向上させます。

    SQLとMySQLの比較:構文と機能SQLとMySQLの比較:構文と機能May 07, 2025 am 12:11 AM

    SQLとMySQLの違いと接続は次のとおりです。1.SQLはリレーショナルデータベースを管理するために使用される標準言語であり、MySQLはSQLに基づくデータベース管理システムです。 2.SQLは基本的なCRUD操作を提供し、MySQLはこれに基づいてストアドプロシージャ、トリガー、その他の機能を追加します。 3。SQL構文標準化、MySQLは、返品行の数を制限するために使用される制限など、一部の場所で改善されています。 4.使用例では、SQLとMySQLのクエリ構文はわずかに異なり、MySQLのJoinとGroupbyがより直感的です。 5.一般的なエラーには、構文エラーとパフォーマンスの問題が含まれます。 MySQLの説明コマンドは、クエリのデバッグと最適化に使用できます。

    SQL:初心者向けガイド - 簡単に習得できますか?SQL:初心者向けガイド - 簡単に習得できますか?May 06, 2025 am 12:06 AM

    sqliseasytolearnforbeginnersduetoitsStraightforwardsyntaxandbasicoperations、butmasteringitinvolvescomplexconcept.1)startsimplequerieslikeselect、insate、delete.2)startiCeRegularlylyusinglikeLeetformslikeLeet codeoreTorsqodeorsqudeLfiddatabes

    SQLの汎用性:単純なクエリから複雑な操作までSQLの汎用性:単純なクエリから複雑な操作までMay 05, 2025 am 12:03 AM

    SQLの多様性とパワーにより、データ処理の強力なツールになります。 1. SQLの基本的な使用には、データクエリ、挿入、更新、削除が含まれます。 2。高度な使用法は、マルチテーブル結合、サブクリーリー、窓の関数をカバーしています。 3.一般的なエラーには、構文、ロジック、パフォーマンスの問題が含まれます。これらは、クエリを徐々に簡素化して説明コマンドを使用することでデバッグできます。 4。パフォーマンスの最適化のヒントには、インデックスの使用、Select*の避け、結合操作の最適化が含まれます。

    SQLおよびデータ分析:情報から洞察を抽出しますSQLおよびデータ分析:情報から洞察を抽出しますMay 04, 2025 am 12:10 AM

    データ分析におけるSQLの中心的な役割は、クエリステートメントを通じてデータベースから貴重な情報を抽出することです。 1)基本的な使用法:GroupByとSum関数を使用して、各顧客の合計注文額を計算します。 2)高度な使用法:CTEとサブQueriesを使用して、1か月あたり最高の販売の製品を見つけます。 3)一般的なエラー:構文エラー、ロジックエラー、パフォーマンスの問題。 4)パフォーマンスの最適化:インデックスを使用し、選択*を避け、参加操作を最適化します。これらのヒントとプラクティスを通じて、SQLはデータから洞察を抽出し、クエリが効率的で維持できるようにするのに役立ちます。

    See all articles

    ホット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衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    Safe Exam Browser

    Safe Exam Browser

    Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

    AtomエディタMac版ダウンロード

    AtomエディタMac版ダウンロード

    最も人気のあるオープンソースエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    WebStorm Mac版

    WebStorm Mac版

    便利なJavaScript開発ツール

    Dreamweaver Mac版

    Dreamweaver Mac版

    ビジュアル Web 開発ツール