0

私は SQL Server 2012 にデータベースを持っていますが、いくつかのテーブルがしばらくすると遅くなるという問題があり、インデックスを再構築することで解決します。それらのいずれかで何が間違っている可能性があるかについて誰かがアドバイスを持っているかどうか疑問に思っていました.私はそれらの構造とインデックスを以下に投稿します. 私はこの構造を自分で構築していませんが、変更するための完全なアクセス権があります。

表1

  • ID (int、null 以外)
  • タイプ (tinyint、null 以外)
  • 名前 (PK、nvarchar(255)、null 以外)
  • fkID (PK、int、null 以外)
  • UID (int、null 以外)

インデックス:

  • I_UID (ユニーク、クラスター化されていない) [UID]
  • I_Name (非一意、非クラスター化) [タイプ,名前]
  • pk_Name (クラスター化) [名前、fkID]

表2

  • ID (PK、bigint、null 以外)
  • 名前 (nvarchar(50)、null 以外)
  • ShortValue (nvarchar(250), null)
  • StringValue (nvarchar(max), null)
  • IntValue (整数、ヌル)
  • FloatValue (フロート、ヌル)
  • DateTimeValue (日時、null)
  • BoolValue (ビット、ヌル)
  • fkPID (FK、int、null)
  • fkAID (FK、int、null)
  • fkAGID (FK、int、null)
  • fkVID (FK、int、null)
  • fkCID (FK、int、null)
  • fkL (FK、int、null 以外)
  • fkIMID (FK、null 以外)
  • fkPRID (FK、int、null)
  • fkNID (整数、ヌル)

インデックス:

  • I_AG (非固有、非クラスター化) [fkAGID]
  • I_IM (非固有、非クラスター化) [fkIMID]
  • I_R (非固有、非クラスター化) [fkPRID]
  • PK_D (クラスター化) 5447370
  • I_PDL (非固有、非クラスター化) [fkL]

表3

  • ID (PK、int、null 以外)
  • fkPID (FK、int、null 以外)
  • fkAID (FK、int、null 以外)
  • 並べ替え (int、null 以外)
  • グループ (nvarchar(50)、null)
  • サイズ (int、null)
  • FMB (nvarchar(50)、ヌル)

インデックス:

  • PK_D (クラスター化) 5447370
  • I_PAA (非固有、非クラスター化) [fkAID]
  • I_PAP (非固有、非クラスター化) [fkPID]
  • I_PAPID (非固有、非クラスター化) [fkPID、fkAID]
4

3 に答える 3

5

私が特に印象に残っているのは、次のコラムです。

pk_Name (Clustered) [Name, fkID]

クラスター化されたキーは、データベース テーブル内のレコードの物理的な順序を決定します。が文字列で、値が「ランダム」な順序で挿入される場合Name(つまり、常にテーブルの最後にアルファベット順であるとは限りません)、データベースは常に行を物理テーブルに「挿入」する必要があるため、パフォーマンスの問題が発生する可能性があります。これにより、テーブル データが断片化され、パフォーマンスも低下する可能性があります。

クラスター化されたインデックスを再構築すると、物理データも再編成されるため、後でパフォーマンスが向上する可能性があります。統計の再計算も要因になる可能性がありますが、連続しない挿入が発生する主キーは通常危険信号です。

また、定義では、テーブル 2 と 3 のクラスター化されたインデックスを構成する列を指定していませんが、名前に基づいて、ID.

于 2013-07-09T13:49:06.793 に答える
2

分析し、必要に応じてインデックスを再構築し、統計を更新する優れたツールは、Ola Hallengren の Index and Statistics Maintenance ツール/スクリプトです。データベースを健全な状態に保つために、整合性チェックとともにこれを毎晩実行しています。

http://ola.hallengren.com/

于 2013-07-09T15:12:06.033 に答える