検索
ホームページデータベース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:データ管理に対する初心者向けのアプローチ?Apr 19, 2025 am 12:12 AM

    SQLは、構文が単純で、機能が強力であり、データベースシステムで広く使用されているため、初心者に適しています。 1.SQLは、リレーショナルデータベースを管理し、テーブルを介してデータを整理するために使用されます。 2。基本操作には、データの作成、挿入、クエリ、更新、削除が含まれます。 3.結合、サブクエリ、ウィンドウ関数などの高度な使用法により、データ分析機能が強化されます。 4.一般的なエラーには、検査と最適化を通じて解決できる構文、ロジック、パフォーマンスの問題が含まれます。 5.パフォーマンス最適化の提案には、インデックスの使用、Select*の回避、説明の使用を使用してクエリの分析、データベースの正規化、コードの読み取り可能性の向上が含まれます。

    SQL in Action:実際の例とユースケースSQL in Action:実際の例とユースケースApr 18, 2025 am 12:13 AM

    実際のアプリケーションでは、SQLは主にデータクエリと分析、データ統合とレポート、データのクリーニングと前処理、高度な使用と最適化、複雑なクエリの処理と一般的なエラーの回避に使用されます。 1)データのクエリと分析を使用して、最も販売製品を見つけることができます。 2)データの統合とレポートは、参加操作を通じて顧客の購入レポートを生成します。 3)データのクリーニングと前処理は、異常な年齢記録を削除できます。 4)高度な使用と最適化には、ウィンドウ関数の使用とインデックスの作成が含まれます。 5)CTEと結合を使用して、SQLインジェクションなどの一般的なエラーを回避するために複雑なクエリを処理できます。

    SQLおよびMySQL:コアの違いを理解しますSQLおよびMySQL:コアの違いを理解しますApr 17, 2025 am 12:03 AM

    SQLはリレーショナルデータベースを管理するための標準言語であり、MySQLは特定のデータベース管理システムです。 SQLは統一された構文を提供し、さまざまなデータベースに適しています。 MySQLは軽量でオープンソースで、パフォーマンスは安定していますが、ビッグデータ処理にはボトルネックがあります。

    SQL:初心者向けの学習曲線SQL:初心者向けの学習曲線Apr 16, 2025 am 12:11 AM

    SQL学習曲線は急ですが、練習とコアの概念を理解することで習得できます。 1.基本操作には、選択、挿入、更新、削除が含まれます。 2。クエリの実行は、分析、最適化、実行の3つのステップに分けられます。 3.基本的な使用法は、従業員情報の照会など、Join Connection Tableの使用などです。 4.一般的なエラーには、エイリアスとSQLインジェクションの使用が含まれないことが含まれ、それを防ぐためにパラメーター化されたクエリが必要です。 5.パフォーマンスの最適化は、必要な列を選択し、コードの読みやすさを維持することにより達成されます。

    SQL:コマンド、mysql:エンジンSQL:コマンド、mysql:エンジンApr 15, 2025 am 12:04 AM

    SQLコマンドは、DQL、DDL、DML、DCL、TCLのMySQLの5つのカテゴリに分割され、データベースデータの定義、操作、制御に使用されます。 MySQLは、語彙分析、構文分析、最適化、実行を通じてSQLコマンドを処理し、インデックスとクエリオプティマイザーを使用してパフォーマンスを向上させます。使用法の例には、データクエリの選択を選択し、マルチテーブル操作に参加します。一般的なエラーには、構文、ロジック、パフォーマンスの問題、および最適化戦略には、インデックスの使用、クエリの最適化、適切なストレージエンジンの選択が含まれます。

    データ分析のためのSQL:ビジネスインテリジェンスの高度な手法データ分析のためのSQL:ビジネスインテリジェンスの高度な手法Apr 14, 2025 am 12:02 AM

    SQLの高度なクエリスキルには、複雑なデータ分析要件を処理できるサブクエリ、ウィンドウ関数、CTE、複雑な結合が含まれます。 1)サブクエリは、各部門で最高の給与を持つ従業員を見つけるために使用されます。 2)ウィンドウ関数とCTEを使用して、従業員の給与成長傾向を分析します。 3)パフォーマンス最適化戦略には、インデックスの最適化、クエリの書き換え、パーティションテーブルの使用が含まれます。

    MySQL:SQLの特定の実装MySQL:SQLの特定の実装Apr 13, 2025 am 12:02 AM

    MySQLは、標準のSQL関数と拡張機能を提供するオープンソースリレーショナルデータベース管理システムです。 1)MySQLは、制限句の作成、挿入、更新、削除、拡張などの標準のSQL操作をサポートしています。 2)InnodbやMyisamなどのストレージエンジンを使用しています。これらは、さまざまなシナリオに適しています。 3)ユーザーは、テーブルの作成、データの挿入、ストアドプロシージャの使用など、高度な機能を介してMySQLを効率的に使用できます。

    SQL:すべての人がデータ管理にアクセスできるようにしますSQL:すべての人がデータ管理にアクセスできるようにしますApr 12, 2025 am 12:14 AM

    sqlmakesdatamanagemagementisibletoallbyproviding asimpleyetpowerfultoolset andmanagingdatabases.1)itworks withersortifyify what what what what what what what what whatysortsopecifyifyを許可します

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

    AI Hentai Generator

    AI Hentai Generator

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

    ホットツール

    SublimeText3 中国語版

    SublimeText3 中国語版

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

    MinGW - Minimalist GNU for Windows

    MinGW - Minimalist GNU for Windows

    このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    mPDF

    mPDF

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

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境