我有LINQ的簡單的SQL更新查詢需要永遠
生成的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'
查詢是非常簡單的,但是當我運行它,它永遠不會結束。所以我不能看執行計劃。桌子也很簡單。基本上所有的列都顯示在查詢中。
該表有三個指標:
IX_VStat
(羣集) - 爲nvarchar(50)IX_VStat_VStatShowInReport
(非唯一,非聚集)PX_VStat
(獨特的,非羣集) - uniqueidentifier
我找到了修復查詢的方法,但不知道它是如何工作的,以及它是否正確
我禁用索引IX_VStat
(集羣),然後重建它。之後,查詢開始工作得很快。
當我禁用索引IX_VStat
(羣集),我得到警告的孔一堆:
警告:對視圖「InsObservView」 引用表「VSTAT」聚簇索引「IX_InsObservId」被停用的禁用 索引'IX_VStat'的結果。
警告:視圖'InsObservView'上的索引'IX_InsId'被禁用,因爲在視圖上禁用聚簇索引的結果爲 。
警告:索引上視圖 「InsObservView」「IX_InsFlId_ShowInReport_InsEndTime_TyId」被停用禁用視圖上的聚集 指數的結果。
警告:索引上視圖 「InsObservView」「IX_InsLocId_ShowInReport_InsEndTime_TyId」被停用禁用視圖上的聚集 指數的結果。
警告:索引上視圖 「InsObservView」「IX_VFlId_ShowInReport_InsEndTime_TyId」被停用禁用視圖上的聚集 指數的結果。
警告:索引上視圖 「InsObservView」「IX_VLocId_ShowInReport_InsEndTime_TyId」被停用禁用視圖上的聚集 指數的結果。
警告:對視圖「TyLifeReport」引用 表「VSTAT」聚簇索引「IX_Index」被停用禁止索引 「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'被禁用,因爲在視圖上禁用聚簇索引的結果爲 。
......這裏還有一打。
所以這個表有很多關係。其中大部分來自意見。
請諮詢幫助)
請提供EST與觸發器執行計劃和視圖定義重新組織索引 – Devart