Performance Probleme mit Datumsfeldern

Hallo,


ich erstelle mit Hilfe von VS 2005 bzw. mit Bussiness Intelligence Projects benutzerdefinierte Report für CRM.


Beim Auslesen/Aufrufen der FilteredViews wird jedes Datum durch die Funktion fn_UTCToTzSpecificLocalTime durch gejagt.




Im letzten Report musste ich mehrfach auf das Feld CreatedOn im FilteredActivityPointer zugreifen.


Da bei jedem Zugriff auf ein Datum (wie oben erwähnt) die Funktion fn_UTCToTzSpecificLocalTime aufgerufen wird, hatte ich große SP bzw. Report Laufzeiten.


 

Da ich nur über die FillterViews auf die Daten zugreifen soll, stehe ich ein wenig auf dem Schlauch, wie ich die Ausleseperformance der Activitys erhöhen kann.


 


Ich lagere die benötigten Daten schon extra in eine TempTab aus, um  im folgenden Statement auf einen Tabelle mit Indexen zugreifen zu können und nicht mehrfach auf das View zugreifen zu müssen.


Leider nimmt der eine Zugriff auf den View über 2/3 der gesamten Laufzeit des Reports in Anspruch.


 


Im Folgenden das SQL Statement das mir die Sorgen macht:


 


Create Table #T_ActivityPointer


(


   activityid uniqueidentifier Primary Key,


   regardingobjectidname nvarchar(400),


   regardingobjectid uniqueidentifier,


   activitytypecodename nvarchar(255),


   actualdurationminutes int,


   createdon datetime,


   description nText,


   owneridname nvarchar(160),


   Subject nvarchar(200),


   activitytypecode int


)


CREATE INDEX regardingobjectidname_index


   ON #T_ActivityPointer (regardingobjectidname)


CREATE INDEX regardingobjectid_index


   ON #T_ActivityPointer (regardingobjectid)


Create INDEX activitytypecode_index


   ON #T_ActivityPointer (activitytypecode)


Insert into #T_ActivityPointer


(


   activityid,


   regardingobjectidname,


   regardingobjectid,


   activitytypecodename,


   actualdurationminutes,


   createdon,


   description,


   owneridname,


   Subject,


   activitytypecode


)


Exec('


   Select activityid,


   regardingobjectidname,


   regardingobjectid,


   activitytypecodename,


   actualdurationminutes,


   createdon,


   description,


   owneridname,


   Subject,


   activitytypecode


   From ' + @CrmDBName + '.dbo.FilteredActivityPointer


   Where (' + @CrmDBName + '.dbo.FilteredActivityPointer.createdon >= ''' + @datDatumBeginn +


   '''And ' + @CrmDBName + '.dbo.FilteredActivityPointer.createdon <= ''' + @datDatumEnde + ''')


')


 


Ich freu mich über jede Antwort


Gruß


A. Polito



AW: Performance Probleme mit Datumsfeldern

Naja bin eben eine wenig weiter gekommen...


wenn man die gesuchten DateTime in eine UTC umwandelt und im View in dem UTC sucht ist das Inserten schon mal doppelt so schnell...


 


Hoffe aber jemand hat noch eine bessere Ideen!


 


Select @datDatumBeginn = dbo.fn_LocalTimeToUTC(datBegin), @datDatumEnde = dbo.fn_LocalTimeToUTC(datEnde) from #T_DateTemp


 


Where (' + @CrmDBName + '.dbo.FilteredActivityPointer.createdonutc >= ''' + @datDatumBeginn +


'''And ' + @CrmDBName + '.dbo.FilteredActivityPointer.createdonutc <= ''' + @datDatumEnde + ''')