2016-08-04 11 views
-1

私は以下のクエリを持っています: 1分以上かかる...パフォーマンスを改善して10秒未満にする必要があります。このクエリのパフォーマンスを向上させる方法は?それは分以上を取っていますか?

あなたの回答を感謝します。

SELECT 
DISTINCT 
RP.RegionPerilID 
,RP.RegionName + ' ' + RP.ShortName AS RegionPerilName 
,LossLevelID 
,LL.LossLvlName AS LossLevelName 
FROM Axis_Accumulation.dbo.AIREventSet ES 
     JOIN Axis_Accumulation.dbo.vw_RegionPerils RP ON RP.RegionPerilId = ES.RegionPerilId 
     JOIN ART.LA.ELT_Blend ELT WITH (NOLOCK) ON ES.EventNum = ELT.EventNum AND ELT.Versionid = @versionId 
     JOIN dbo.LA_LossLevel LL ON ELT.LossLevelID = LL.LossLvlID AND LL.LosstypeId = 3 -- Line of Business 
     ORDER By RegionPerilName 
+5

実行計画はありますか?各テーブルには個別にいくつのレコードがありますか? –

+4

多くの支援を提供するには、実行計画、表構造、および索引が必要です。一方、あなたは大部分が正確なデータで大丈夫でない限り、NOLOCKを取り除くことを検討するかもしれません。 http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –

+2

クエリをより速く実行するために使用できるテーブルのインデックスはありますか?テーブルを適切に結合していることを確認してください。 – JT4U

答えて

1

彼らはまだ存在しない場合は、これらのインデックスを作成しようとする必要があります

CREATE NONCLUSTERED INDEX IX_AIREventSet ON Axis_Accumulation.dbo.AIREventSet 
(
    RegionPerilID 
) 
INCLUDE 
(
    EventNum 
) 

CREATE NONCLUSTERED INDEX IX_AIREventSet_EvenNum ON Axis_Accumulation.dbo.AIREventSet 
(
    EventNum 
) 


CREATE NONCLUSTERED INDEX IX_vw_RegionPerils ON Axis_Accumulation.dbo.vw_RegionPerils 
(
    RegionPerilID 
) 
INCLUDE 
(
    RegionName, 
    ShortName 
) 


CREATE NONCLUSTERED INDEX IX_ELT_Blend ON ART.LA.ELT_Blend 
(
    EventNum, 
    Versionid, 
) 
INCLUDE 
(
    LossLevelID 
) 

CREATE NONCLUSTERED INDEX IX_ELT_Blend_LossLevelID ON ART.LA.ELT_Blend 
(
    LossLevelID 
) 



CREATE NONCLUSTERED INDEX IX_LA_LossLevel ON dbo.LA_LossLevel 
(
    LossLvlID, 
    LosstypeId 
) 
INCLUDE 
(
    LossLvlName 
) 

以下のリストで、フィールドが一意である場合は、インデックスの定義でUNIQUE句を追加します。 INCLUDEステートメントは、1つのインデックスを検索してすべてのデータを取得するため、重要です。 索引を1つずつ追加し、実行計画が使用されているかどうかをチェックします。そうでない場合は削除することができます。

この最後のインデックスは、データのソートに役立ちます。

CREATE CLUSTERED UNIQUE INDEX IX_AIREventSet_Clustered ON Axis_Accumulation.dbo.AIREventSet 
(
    RegionName, 
    ShortName, 
    RegionPerilID, 
    [YourTableId] 
) 
+0

こんにちは、ロム....この最後のインデックスの[YourTableId]とは何ですか?私はこのテーブルにアイデンティティコラムを持っていません。 – Rita

+0

Idenity Columnがある場合は、このフィールドを忘れてしまいます。おそらくユニークな句も削除する必要があります。 –

関連する問題