datetime - Why some dates give worse performance than other in MS SQL Server -


i have query in ms sql server asking name , date-related information, depending on 2 dates, start- , enddate.

the problem is, i´m not getting same performance. whenever request between dates;

2010-07-01 00:00:00.000 , 2011-07-21 23:59:59.999 

the performance excellent. result within mseconds. when request between these dates, example,

2011-07-01 00:00:00.000 , 2011-07-21 23:59:59.999 

the performance is.. less good, taking between 20-28 seconds each query. note how dates giving performance more year between, while latter 20 days.

is there particular reason (maybe related how datetime work) this?

edit: query,

select ename,      sum(case date when 0 1 else 0 end) u2,      sum(case date when 1 1 else 0 end) b_2_4,      sum(case date when 2 1 else 0 end) b_4_8,      sum(case date when 3 1 else 0 end) b_8_16,      sum(case date when 4 1 else 0 end) b_16_24,      sum(case date when 5 1 else 0 end) b_24_48,      sum(case date when 6 1 else 0 end) o_48,      sum(case date when 7 1 else 0 end) status,      avg(avg) avg,      sum(date) total       (select ename,              (case                  when status = 'Öppet' 7                  when date < 48                      (case when date between 0 , 2 0                      when date between 2 , 4 1                      when date between 4 , 8 2                      when date between 8 , 16 3                      when date between 16 , 24 4                      when date between 24 , 48 5                      else - 1 end)              else 6 end) date,              date avg              (select datediff(hour, cases.date, status.date) date,          extern.name ename,          status.status              cases inner join         status on cases.id = status.caseid                  , status.date =                     (select max(date) expr1                     status status_1                     (caseid = cases.id)                     group caseid) inner join                     extern on cases.owner = extern.id                     (cases.org = 'expert')                          , (cases.date between '2009-01-15 09:48:25.633'                          , '2011-07-21 09:48:25.633'))     derivedtbl_1)  derivedtbl_2 group ename order ename 

(parts of) tables:

extern     -id (->cases.owner)     -name cases     -owner (->extern.id)     -id (->status.caseid)     -date (case created @ date) status     -caseid (->cases.id)     -status     -date (can multiple, max(status.date) gives date when       status last changed) 

i have thought statistics issue.

when selecting recent dates these may unrepresented in statistics yet threshold has not yet been reached trigger auto updating.

see blog post example.


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -