今日では、ビューのポイントitputの記事で、声明を議論するために最適化されています。
オリジナルポスト住所:http://www.itpub.net/viewthread.php?tid=1015964&extra=&page=1
まず、問題を特定
文の最適化:
CREATE TABLEの aa_001 (IP VARCHAR2 (28 )、 名前 VARCHAR2 (10 )、 パスワード VARCHAR2 (30 ))SELECT * から aa_001 WHERE 腹腔 内 (1 、2 、3 ) ご注文により、 名前 DESC ; - 現在のテーブルには、およそ千万ストリップがあります記録するだけでなく、値の数に不確実です。
これらは、文や状況の最適化を最適化する必要があります。
バックスレッドで多くの人々は:いくつかは、最適化する方法を言わない、といくつかは、これは、INはEXISTSいくつか言っ率複合指数(IP、名前)などのIP上にあると言います。
第二に、質問をします
このような状況ということ、それを最適化するために、どのように最適化しますか?今日は、この問題を議論します。
第三に、問題の分析
1、データの量より千万以上。
図2は、値の数に不確実です
データ配信の3.1分析
ここで著者は、IP、現在分散データ列は、次のものがあり、データ列のIPの分布については言及しませんでした。
1、IPカラム(ユニーク確率データ、又はデータの重複が小さいです)
2、IP列(データ不均一、データの一部が複数繰り返されてもよいが、いくつかのより少ない繰り返し)
図3に示すように、IP列(データがより均一に分散される、データ複製大量のは、主に同一のデータの一部は、(IPレベルデータ、等)の何千も異なっていてもよいです
問題を解決するには:
1、列IPへのインデックスに基づいて、第1の場合のデータ分布。この時点では、どんなに多くの行の表、ケース内の数字は非常に迅速に、不確実ではありません。
図2に示すように、データの第2の分布に対応する、IPにおける列インデックス、無効。データの偏在ので、いくつかの高速ないくつか遅いがあるかもしれません
図3に示すように、分布に対応する第3のデータ、インデックスIP列間違い低速。
注意:ここに名前DESCによって順序があるデータを取得し、その後、並べ替えの。代わりにソートする前にデータを取って
大量のデータを削除する必要が、オプティマイザがテーブルスキャン(テーブルスキャン)、というよりもインデックス検索を(インデックスが求めて)使用しているため、2例2及び3の場合、それは、非常に遅いことも可能であるその後、効率が優れたスキャンテーブルであるため、インデックス検索、特に高い同時実行の下で、効率が低いです。
2とをどのように扱うか、状況に対応して3。これは、変更している存在します。実際には、データが中に後ろから来たのSQL Server 2005とOracleでオプティマイザは、効率は同じです。一般的な指標の低い効率のこの場合使用。IPは、列にクラスタ化インデックスを構築する場合は次に、それは、より効率的です。私たちは、SQL Server 2005でテストを行います。
表:[DBO] [zping.com]]]約2億データ。列は含まれユーザーID、上記のID、RuleIdや他の列を。同様の声明について、上記の場合のお問い合わせによると:
私たちは、データの分布を見て、ユーザーID、次の文を実行します。
その後、我々は、データの分布を見て:379個のデータの合計、2は1から150000から、あるデータ分布が大きく傾いています。これは、図の一部です。
IP、非効率的で非クラスタ化インデックスの確立がされており、そして、場合、インデックスをスキャンすることを余儀なくさ、効率が非常に低い、あなたはIOのでしょうテーブルスキャンよりも高い回。この時点で我々は、IP上のクラスタ化インデックスを構築することができます。そして、その結果を見てください。
そして、検索スキャンを収集し、(クラスタ化インデックスを求める)を使用して検索を見つけました。
クエリによって返された結果を見てみましょう:
テーブル ' [zping.com] ' 。スキャン数 8 、ロジック読ん 5877を 、物理読み込み 0を 先読みし、 0 回、ロブ論理読み取り 0 ロブ物理読み込み、回数を 0 回、ロブ先読みを 0 回。
表 「 ワークテーブル 」 。スキャン回数 0 、論理読み取り 0を 物理読み込み、 0を 先読みし、 0 回、ロブ論理読み取り 0 ロブ物理読み込み、回数を 0 回、ロブ先読みを 0 回。
だけ少ない6,000回IOよりも15万行を返します。1500万行がソートするため、高効率、中のクエリコスト順序が51%を占めました。もちろん、あなたが(構築することができ、ユーザーID、RuleIdパフォーマンスを向上させるための)複合クラスタ化インデックスが、このDML高いメンテナンスコストを。お勧めできません。
例えば上記の試験から分かるように、最適化ソリューション:
1のデータ配信:IPへのインデックスを作成します。
データ分布2,3:IP列にクラスタ化インデックスを構築します。
ます。https://www.cnblogs.com/flysun0311/archive/2012/08/28/2659721.htmlで再現