ETL プロセスのパフォーマンスに問題があります。40 億行以上のテーブルがあります。構造は次のとおりです。
id
bigint ID(1,1)raw_url
varchar(2000) が null ではないmd5hash
char(32) が null ではないjob_control_number
int null ではない
id のクラスター化された一意のインデックスと md5hash の非クラスター化の一意のインデックス
SQL Server 2008 エンタープライズ ページ レベルの圧縮がオンになっています
Web サーバー ログから生の URL をディメンションとして保存する必要があります。生の文字列が 900 文字を超えるため、その列に一意のインデックスを配置することはできません。md5 ハッシュ関数を使用して、インデックス作成用の一意の 32 文字の文字列を作成します。テーブル内で重複する raw_url 文字列を許可することはできません。
問題はパフォーマンスの低下です。もちろん、md5hash は本質的にランダムであるため、インデックスの断片化は 50% に達し、非効率的な IO につながります。
これを構造化して、挿入と検索のパフォーマンスを向上させ、インデックスの断片化を減らす方法についてのアドバイスを探しています。