3

最近、データベースのインデックス作成とクラスター化インデックス作成についていくつかの質問がありましたが、ここ数週間までは少し新しいものでした。それがどれほど重要であり、それらを作成することでどのようなパフォーマンスの向上が期待できるのか疑問に思いました。

Edit: What is usually the best type of fields to look at when putting in a clustered index when you are first starting out?

4

7 に答える 7

10

非常に非常にA ( G , G )重要です。私の意見では、賢明なインデックス作成は、DB パフォーマンスの最適化において絶対的に最も重要なことです。

これは、1 つの回答でカバーするのが簡単なトピックではありません。優れたインデックス作成には、データベースで発生するクエリに関する知識が必要であり、多数のトレードオフを行い、特定の DB エンジンにおける特定のインデックスの意味を理解する必要があります。しかし、それでも非常に重要です。

編集:基本的に、クラスター化されたインデックスは通常、短い長さにする必要があります。範囲を反映するクエリで作成する必要があります。エントリが重複していてはなりません。しかし、これらのガイドラインは非常に一般的であり、決して正しいものではありません。正しいことは、実行されるクエリを分析することです。実行計画を慎重にベンチマークして分析し、それを実行する最善の方法を理解します。これには長年の経験と知識が必要であり、一言で説明できるものではありません。これは、DB の専門家をエキスパートにするための主要な要素です (それだけではありませんが、同時実行性の問題、可用性など、他の重要なことに対して原始的です)!

于 2008-12-31T16:35:58.650 に答える
2

索引付け: 非常に重要です。間違ったインデックスを使用すると、クエリが難しくなり、適切な時間内に完了できない場合があります。

インデックスは、挿入のパフォーマンスとディスクの使用にも (悪影響を及ぼします) 影響を与えるため、大きなテーブルに余分なインデックスを多数保持することもお勧めできません。

クラスタリングは検討する価値のあるものです。特定のデータベースの動作に大きく依存していると思います。データを正しくクラスター化できれば、メモリ内にない行に対する要求を満たすために必要な IOP の量を大幅に削減できます。

于 2008-12-31T16:40:07.033 に答える
1

適切なインデックスがないと、RDBMS にテーブル スキャンを実行させて何かをクエリさせます。ひどく非効率的です。

また、主キーがないことも推測できます。これは、リレーショナル設計における大罪です。

于 2008-12-31T16:37:23.840 に答える
1

テーブルに多くの行が含まれている場合、インデックス作成は非常に重要です。
いくつかの rws を使用すると、インデックスを使用しない方がパフォーマンスが向上します。
大きなテーブルでは、パフォーマンスを向上させるためにインデックスが非常に重要です。
それらを定義するのは簡単ではありません。クラスター化とは、データがクラスター化されたインデックスの順序で格納されていることを意味します。
インデックスの良いヒントを得るには、Toad を使用できます

于 2008-12-31T16:42:51.100 に答える
1

索引付けは非常に重要です。

クエリの適切なインデックスは、魔法のように劇的にパフォーマンスを向上させることができます。

于 2008-12-31T16:43:57.963 に答える
1

他の回答が言っているように、インデックス作成は非常に重要です。

他の回答から推測できるように、クラスター化されたインデックス作成はそれほど重要ではありません。

適切なインデックス作成により、一次のパフォーマンス向上が得られます。桁違いのパフォーマンスが一般的です。

クラスター化されたインデックス作成は、二次的または増分的なパフォーマンスの向上であり、通常はわずかな (<100%) パフォーマンスの向上をもたらします。

(「100% のパフォーマンス向上とは何か」という質問も出てきます。パーセンテージを ((oldtime - newtime)/newtime) * 100 と解釈しているので、古い時間が 10 秒で、新しい時間が 5 秒の場合秒、パフォーマンスの向上は 100% です。)

DBMS が異なれば、クラスター化インデックスの意味についての解釈も異なります。注意してください。特に、一部の DBMS はデータを 1 回クラスタリングし、その後、データが再クラスタリングされるまで、時間の経過とともにクラスタリングが減衰します。クラスタリングについてもっと積極的な見方をする人もいると思います。

于 2008-12-31T18:35:00.907 に答える
0

通常、クラスター化インデックスは主キーですが、必ずしもそうではありません。クラスター化インデックスを理解する 1 つの方法は、データがクラスター化インデックスの値に基づいて物理的に順序付けられていると考えることです。

これは実際には当てはまらないかもしれませんが、クラスタ化されたインデックスを参照すると、通常、次のようなパフォーマンス ボーナスが得られます。

  1. テーブルのすべての列は、クラスター化されたインデックス ヒットから解決されると、カバリング インデックス内に含まれているかのように無料でアクセスできます。(テーブル自体のデータ ページを参照する必要なく、インデックス データのみを使用して解決可能なクエリ)

  2. 更新操作は、中間処理なしでクラスター化インデックスに対して直接行うことができます。テーブルに対して多くの更新を行っている場合、通常はクラスター化された列を参照する必要があります。

  3. 実装によっては、コストのかかるディスク シーク操作が減り、ディスクに保存されたデータがより迅速に取得されるシーケンシャル アクセスの利点が得られる場合があります。

  4. 実装によっては、単純な推測ゲーム アルゴリズムを介してデータ アクセスを解決できるため、物理インデックスが不要な無料インデックスの利点がある場合があります。

#3、特に#4を当てにしないでください。#1 と #2 は、ほとんどの RDBMS プラットフォームで通常安全な賭けです。

于 2008-12-31T19:08:21.743 に答える