私はまだSQLに精通していません。私は学んでいますが、それは遅いプロセスです。私は、SQL Server のデータベースに大量の情報を格納するプロジェクトに取り組んでいます。テーブルの 1 つである ContactInformation では、すべてのアドレス情報で構成される非クラスター化インデックスが 900 バイトを超えるため、エントリを変更しようとするとエラーが発生します。sys.dm_db_index_usage_stats
テーブル内のエントリを変更すると 3user_seeks
と 1になることを確認してきましたuser_update
。
C# コードはインデックスを直接呼び出していないようです。19 個のパラメーターを持つさまざまなDbCommand
ストアド プロシージャ コマンドで構成される単一のコマンドを実行します。私の考えでは、インデックスを削除するか、操作するインデックスを小さくすることを期待して、パラメーターの数を減らして複数の更新に分割Update
しようとします。DbCommand
私は経験が不足しているため、少し海にいます。次の方向へのアドバイスを歓迎します。
インデックスは次のもので構成されています。
| Name | Data Type | Size |
|----------------------|---------------|------|
| ContactInformationID | int | 4 |
| CompanyID | smallint | 2 |
| Address1 | nvarchar(420) | 840 |
| Address2 | nvarchar(420) | 840 |
| City | nvarchar(420) | 840 |
| State | nvarchar(220) | 440 |
| PostalCode | nvarchar(120) | 240 |
| Country | nvarchar(220) | 440 |
はい、ほとんどの列が特大です。このデータベースは別のプロジェクトから継承したようです。当社のソフトウェアでは、一部の外れ値はありますが、ほとんどの列が 100 文字以内に制限されています。