2011-06-02 15 views
6

olan dizinleri nasıl bulabilirim Tüm indeksleri ve kendi STATISTICS_NORECOMPUTE değerlerini listeleyen bir SQL Server 2005 sorgusu arıyorum. Bu değere karşılık gelen sysindexes'te bariz bir değer görmedim.Statistics_norecompute = ON

cevap

7

kolon

Her endeks aynı adı ve kimliği (sys.indexes.object_id = sys.stats.object_id VE sys.indexes.index_id ile ilgili bir istatistik satırı olacağı diyor sys.stats yılında no_recompute olduğunu = sys.stats.stats_id), ancak her istatistik satırında karşılık gelen bir dizin yoktur.

Yani için endeksini maç olacak sys.indexes ve sys.stats arasında JOIN Eğer

Sebep:

bir dizin tam bir sütun veya endeksler
  • için olabilir
  • istatistiklere sahip
      istatistik.
    • STATISTICS_NORECOMPUTE o dizin için istatistik için geçerlidir dizine kendisi
    Bu sorguyu kullanabilirsiniz
  • 3

    :

    select TableName = so.name, 
         IndexName = si.name, 
         StatName = s.name, 
         s.no_recompute 
        from sys.indexes si 
          inner join sys.stats s on si.object_id = s.object_id 
          inner join sys.objects so on si.object_id = so.object_id 
        where  no_recompute = 0 
         and so.[type] in ('U', 'V') 
    order by so.name, si.name, s.name