2016-08-16 8 views
0

を取る私はLINQの単純なSQLの更新クエリは永遠

exec sp_executesql N'update [dbo].[VStat] 
set [VStatName] = @0, [VStatEnum] = @1, [VStatDownload] = @2, [VStatUpdateTime] = @3, [VStatShowInReport] = @4, [VStatShowInFleetReport] = @5, [VStatShowInMonitoringReport] = @6, [VStatShowInMobileApp] = @7 
where ([VStatId] = @8) 
',N'@0 nvarchar(50),@1 decimal(18,0),@2 bit,@3 datetime2(7),@4 bit,@5 bit,@6 bit,@7 bit,@8 uniqueidentifier',@0=N'Actif',@1=1,@2=1,@3='2016-08-16 12:39:01.4753654',@4=1,@5=1,@6=1,@7=1,@8='3A124BBA-6ECB-46A8-8932-06D24E55E3B9' 

によって生成されたSQLクエリは、クエリは非常に簡単ですしているが、私はそれを実行すると、それは決して終わりません。だから実行計画を見ることはできません。テーブルもかなりシンプルです。基本的には、すべての列がクエリに表示されます。

テーブルには3つのインデックスがあります

  • IX_VStat(クラスタ化) - データ型はnvarchar(50)
  • IX_VStat_VStatShowInReport(非ユニークな、非クラスタ)
  • PX_VStat(ユニーク、非クラスタを) -

UNIQUEIDENTIFIER私はではなく、それがどのように動作するか確認してくださいクエリを修正する方法を発見し、それは今まで正しい

かどう

インデックスIX_VStat(クラスタ化)を無効にしてから再構築しました。その後、クエリはかなり高速に動作し始めました。無効化されたクラスタ化インデックス「IX_InsObservId」「InsObservView」 参照テーブル「VSTAT」ビュー上:

警告:私はIX_VStatが(クラスタ化)インデックスを無効に

、私は警告の穴の束を得ましたインデックス 'IX_VStat'を無効にした結果です。

警告:ビュー 'InsObservView'のインデックス 'IX_InsId'は、ビューのクラスタ化インデックスを無効にした結果、 の結果として無効になりました。

警告:ビュー 上のインデックス「IX_InsFlId_ShowInReport_InsEndTime_TyIdは」「InsObservView」ビューにクラスタ化インデックス を無効にした結果として無効になっていました。

警告:ビュー 上のインデックス「IX_InsLocId_ShowInReport_InsEndTime_TyIdは」「InsObservView」ビューにクラスタ化インデックス を無効にした結果として無効になっていました。

警告:ビュー 上のインデックス「IX_VFlId_ShowInReport_InsEndTime_TyIdは」「InsObservView」ビューにクラスタ化インデックス を無効にした結果として無効になっていました。

警告:ビュー 上のインデックス「IX_VLocId_ShowInReport_InsEndTime_TyIdは」「InsObservView」ビューにクラスタ化インデックス を無効にした結果として無効になっていました。

警告:クラスタ化インデックス「IX_Index」表示「TyLifeReport」 テーブル「VSTAT」を参照するには、インデックス 「IX_VStat」を無効にした結果として無効になっていました。

警告:クラスタ化インデックス「IX_Index」ビューの「tc_support_V」 テーブル「VSTAT」を参照するには、インデックス を無効にした結果として無効になっていた「IX_VStat」。

警告:ビュー 'tc_support_V'のインデックス 'IX_FlId_Stat'は、ビューのクラスタ化インデックスを無効にした結果、 の結果として無効になりました。

警告:ビュー 'tc_support_V'のインデックス 'IX_LocId_VId'は、ビューのクラスタ化インデックスを無効にした結果、 の結果として無効になりました。

警告:クラスタ化インデックス「IX_Index」ビューの「MinTrDepView」 テーブル「VSTAT」を参照するには、インデックス を無効にした結果として無効になっていた「IX_VStat」。

警告: 'MinTrDepView'ビューのインデックス 'IX_InsFlId_InsDate'は、ビューのクラスタ化インデックスを無効にした結果、 が無効になっています。

警告: 'MinTrDepView'ビューのインデックス 'IX_InsId_TrDep'は、ビューのクラスタ化インデックスを無効にした結果 として無効になりました。

...ダースはこちらです。

この表には多くの関係があります。彼らの大部分は見解に由来しています。

+2

それには、テーブル内の行の多くを持っている場合は、インデックスを再編成するためのメンテナンスタスクを追加し、多かれ少なかれ、大きなトラフィック – Devart

答えて

0

はあなたのデータベースを再設計し、surrogated(int型、biginまたはUNIQUEIDENTIFIER)主キーの代わりに、データ型はnvarchar(50を使用する必要があるかもしれない)アドバイスを助けてください?したがって、すべての外部キーはこのキーを参照し、文字列値のインデックスは常に遅くなります。 nvarchar(50)フィールドにクラスタ化されていないインデックスを追加できます。

また、トリガーとEST実行計画とビュー定義を提供してください

関連する問題