I have a few report viewers on the same window and I control their visibility by a dropdown selector.
I am experiencing unusually long and unpredictable response times to retrieve the data.
When I first look at one of the reports I may wait up to a minute to actually retrieve data and after I have the data, changing the timeframe requires no additional wait times, So my range could be 2 hours and I may wait 1 minute and once I have those it will be a fraction of a second to get data between 2 months.
I can’t understand WHY the query is sometimes slow and sometimes instant but here is an example of one of my report data bindings:
[code]if {Root Container.HighBayFaults.open} = 1
begin
SELECT ROUND(SUM(t.HBNorthJam) + 0.4,0) AS HBNorthJam, ROUND(SUM(t.CDIMergeJam) + 0.4,0) AS CDIMergeJam, ROUND(SUM(t.ShoesMergeJam) + 0.4,0) AS ShoesMergeJam,
ROUND(SUM(t.ShoesMergeFull) + 0.4,0) AS ShoesMergeFull,
ROUND(SUM(t.Door81MergeFull) + 0.4,0) AS Door81MergeFull, ROUND(SUM(t.MergeFull) + 0.4,0) AS MergeFull,
CAST(DATEPART(month, p.t_stamp) AS varchar) + ‘-’ + RIGHT(‘0’ + CAST(DATEPART(day, p.t_stamp) AS varchar),2) + ’ ’ +
RIGHT(‘0’ + CAST(DATEPART(hour, p.t_stamp) AS varchar), 2) + ‘:00’ AS [Hour],
SUM(p.ShoesMergeJams) AS ShoesMergeJams, SUM(p.Door81MergeJams) AS Door81MergeJams, SUM(p.NorthHighBayMergeJams) AS NorthHighBayMergeJams
FROM HighBayDowntime t
FULL OUTER JOIN HighBay p
ON CAST(DATEPART(month, p.t_stamp) AS varchar) + ‘-’ + RIGHT(‘0’ + CAST(DATEPART(day, p.t_stamp) AS varchar),2) + ’ ’ +
CAST(DATEPART(hour, p.t_stamp) AS varchar) + ’ ’ + CAST(DATEPART(minute, p.t_stamp) AS varchar)=
CAST(DATEPART(month, t.t_stamp) AS varchar) + ‘-’ + RIGHT(‘0’ + CAST(DATEPART(day, t.t_stamp) AS varchar),2) + ’ ’ +
CAST(DATEPART(hour, t.t_stamp) AS varchar) + ’ ’ + CAST(DATEPART(minute, t.t_stamp) AS varchar)
WHERE p.t_stamp BETWEEN Cast(’{Root Container.HighBayFaults.StartDate} {Root Container.HighBayFaults.Start}’ as datetime)
and Cast(’{Root Container.HighBayFaults.EndDate} {Root Container.HighBayFaults.End}’ as datetime)
Group By CAST(DATEPART(month, p.t_stamp) AS varchar) + ‘-’ + RIGHT(‘0’ + CAST(DATEPART(day, p.t_stamp) AS varchar),2) +
’ ’ + RIGHT(‘0’ + CAST(DATEPART(hour, p.t_stamp) AS varchar), 2) + ‘:00’
ORDER BY Hour
end
else
begin
select 0
end[/code]
The idea here is to join and group the data by HOUR and the range is selectable by using a daterange slider component. I have a feeling the problem lies with the conversion of datetime to varchar but am not sure how this could be made more efficient.
Any ideas?