2016-11-18 1 views
0

Meine Frage ist, ist es möglich, alle Aktivitäten für ein Konto in CRM durch eine SQL-Abfrage in einem akzeptablen Zeitraum zu bekommen?Erhalten Sie alle Aktivitäten zu einem Konto - CRM 2016

Überraschend ist, dass alle Aktivitäten in der Account-Übersicht in CRM sind. Und diese Seite wird sofort geladen.

Ich habe eine Abfrage nur für E-Mail-Aktivitäten erstellen. Die Abfrage wird ca. 25 Minuten lang ausgeführt. Was mir nicht überraschend ist xD. Aber ich kann keine klare Beziehung zwischen den 2 Tabellen finden.

Einige Daten: ~ 460000 E-Mail-Aktivitäten ~ 28000 Kontakte ~ 37000 Accounts

Hier ist die SQL-Abfrage:


    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 

Antwort

0

Das Problem in Ihrem qry ist. Wenn Sie Like mit '% ...' verwenden, wird der Index neuer verwendet.

Die beste Lösung in Ihrem Fall ist Catch Qry (mit SQL Server Profiler (in SSSMS -> Tools -> SQL-Profiler)) - Es wird Ihnen Informationen über das Dataset und Sie können Verbindung zwischen Tabellen über umgekehrte Analyse erhalten.

+0

Hallo, jea das Problem mit dem Index war mir bekannt, aber das war die einzige Lösung zu dieser Zeit. Ich habe es mit dem SQL Profiler gemacht. Aber atm ich verstehe es nicht, was für ID's er benutzt. Ich werde mich bemühen und euch wissen lassen, ob ich eine Lösung habe. – R3tty

Verwandte Themen