2

4.0 から CRM 2011 にアップグレードしたばかりですが、アプリケーション ログに多くのエラーが表示されます。これは、電子メール ルーターが原因だと思います。エラー テキストは、「30.0 秒のクエリ実行時間が 10 秒のしきい値を超えました」です。

実行しているクエリは次のとおりです。

WITH Candidates
        (
            ActivityId
        ) AS
        (SELECT  ActivityId
        FROM     EmailHashBase WITH (NOLOCK)
        WHERE    ActivityId IN
                (SELECT  ActivityId
                FROM     EmailHashBase WITH (NOLOCK)
                WHERE    HashType = 0
                    AND Hash IN (111682,1892164739,45,1824023892,54,3805,125879)
                GROUP BY ActivityId
                HAVING   COUNT(ActivityId) >= 7
                )
            AND HashType = 1
            AND Hash IN (969105075,1418975348,547970098,1044570065,-1578559672,1137188287,-1492206818,1365121987,1893861533,-1313312639,-1829169632,-1685403462,-518982188,1123523219,284291011,-981044541,1790111815,-808308608,-599769785,971845046)
        GROUP BY ActivityId
        HAVING   COUNT(ActivityId) >= 2
        )
SELECT   TOP 1 a.ActivityId
FROM     ActivityPointerBase AS a WITH (NOLOCK)
WHERE    a.ActivityId IN
            (SELECT ActivityId
            FROM    Candidates AS c
            WHERE(
                    (SELECT COUNT(*)
                            FROM    EmailHashBase AS h
                            WHERE   h.ActivityId = c.ActivityId
                                AND h.HashType   = 0
                    )
                    <= 7
                ) 
            )
ORDER BY a.ModifiedOn DESC

このクエリをデータベースに対して直接実行するには、最大 1 分かかります。「Set Statistics IO ON」を使用して実行したところ、次の結果が得られました。

Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'EmailHashBase'. Scan count 17696074, logical reads 53155625, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'ActivityPointerBase'. Scan count 1, logical reads 5060, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:
CPU time = 36567 ms,  elapsed time = 36562 ms.

明らかに、EmailHashBase に問題があります。Hash 列に非クラスター化インデックスを追加し、インデックスを再構築しましたが、まだスキャン数と論理読み取り数が多くなっています。

クエリを変更できません。

これを修正するためにテーブルに対してできることについて何か提案はありますか?

4

1 に答える 1

0

遅延の原因となったデータベース チューニング アドバイザーによってインデックスが作成されたことが判明しました。インデックスを削除すると、問題が解決しました。

于 2012-10-30T19:43:38.210 に答える