there is always the undocumented DBCC MEMUSAGE command.You could run something likeCreate table #memusage (dbid INT, objid INT, indexid INT, Buffers INT, Dirty INT)insert into #memusage Exec ('dbcc memusage (IDS, 1000)')select * from #memusage
My example uses a temp table, but you probably should use a permanent table, maybe with a datetime column. Another job could aggregate that information to a results table for you. You could create a table that contains all your indexes and then tally against them for each time an index showed up in the cache.Keep in mind that this is an undocumented DBCC command. It has been unsupported since SQL 7. There is also a KB article saying that running DBCC MEMUSAGE can be very bad on a busy system. http://support.microsoft.com/kb/196629-ec