2016-11-18 3 views
0

私の質問は、受け入れ可能な時間内にSQLクエリによってCRMの1つのアカウントのすべてのアクティビティを取得することは可能ですか?すべてのアクティビティを1つのアカウントに取得する - CRM 2016

驚くべきことは、すべてのアクティビティがCRMのアカウント概要にあることです。そのページはすぐに読み込まれます。

私はEmail-Activitiesだけのクエリを作成しました。クエリは25分ほどで実行されます。私には驚くべきことではないxD。しかし、私は2つのテーブルの間に明確な関係を見つけることができません。

一部のデータ: 〜46万メール-活動 〜28000コンタクト 〜37000個のアカウント

ここでは、SQLクエリがあります:


    select account.Name, Max(email.CreatedOn) from Email  
    as email 
    join Contact as contact on email.DirectionCode = 1 
    and datediff(wk, email.CreatedOn, GetDate()) > 12 
    and (email.ToRecipients Like '%' + contact.EMailAddress1 +'%' 
    or email.ToRecipients Like '%' + contact.EMailAddress2 +'%' 
    or email.ToRecipients Like '%' + contact.EMailAddress3 +'%') 
    join Account as account on account.AccountId = contact.AccountId 
    Group by account.Name 

答えて

0

問題は、あなたたqryです。 '%...'のように使うと、新しいインデックスが使用されます。

SQL Server Profiler(SSSMS - >ツール - > SQLプロファイラ)でキャッチqryが最適です。 - データセットに関する情報を提供し、逆解析によってテーブル間の接続を確立できます。

+0

こんにちは、私はインデックスの問題がわかっていましたが、それは当時の唯一の解決策でした。私はSQLプロファイラでそれをやった。しかしatm私はIDのために彼が使用しているものを得ることはありません。私は一生懸命努力して、あなたに解決策があるかどうかを知らせます。 – R3tty

関連する問題