indexing - SQL Server 2012 Avoiding Index Scan for Aggregate? -
i have large select statement, index scan taking 83% of time, , takes many seconds return when there 700k rows. made subset of here:
set nocount on create table #scanme ( lookid int identity primary key , stateid tinyint ) create nonclustered index scanstateid on #scanme (stateid) stateid in ( 0 ) go insert #scanme values ( 0 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 0 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 0 ) go insert #scanme values ( 0 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 0 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 0 ) go insert #scanme values ( 0 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 0 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 0 ) go insert #scanme values ( 0 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 0 ) ; insert #scanme values ( 1 ) ; insert #scanme values ( 2 ) ; insert #scanme values ( 0 ) go select sum( case when stateid=0 1 else 0 end ) notdone , sum( case when stateid=1 1 else 0 end ) doneok , sum( case when stateid=2 1 else 0 end ) doneerrors #scanme
if run in ssms right not see same plan getting, dml above illustrate problem is. 700k rows, sum requirement apparently causing index scan mssql looks @ every stateid , adds up.
can recommend different index (or how alter select) make query return quickly?
thanks.
Comments
Post a Comment