Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak często należy odbudowywać indeksy w naszej bazie danych SQL Server?

Panuje ogólna zgoda, że ​​powinieneś reorganizować ("defragmentować") swoje indeksy, gdy tylko fragmentacja indeksu osiągnie więcej niż 5 (czasami 10%), a powinieneś je całkowicie przebudować, gdy przekroczy 30% (przynajmniej takie są liczby, które ja' słyszałem zalecane w wielu miejscach).

Michelle Ufford (alias „SQL Fool”) ma skrypt zautomatyzowanej defragmentacji indeksu , który wykorzystuje te dokładne limity do decydowania, kiedy należy zreorganizować lub odbudować indeks.

Zobacz także wskazówki Brada McGehee dotyczące odbudowy indeksów z kilkoma dobrymi przemyśleniami i wskazówkami, jak radzić sobie z odbudową indeksu.

Używam tego skryptu tutaj (nie pamiętam, kiedy go dostałem od - ktokolwiek to był:wielkie dzięki! Naprawdę pomocne rzeczy) do wyświetlenia fragmentacji indeksu na wszystkich indeksach w danej bazie danych:

SELECT 
    t.NAME 'Table name',
    i.NAME 'Index name',
    ips.index_type_desc,
    ips.alloc_unit_type_desc,
    ips.index_depth,
    ips.index_level,
    ips.avg_fragmentation_in_percent,
    ips.fragment_count,
    ips.avg_fragment_size_in_pages,
    ips.page_count,
    ips.avg_page_space_used_in_percent,
    ips.record_count,
    ips.ghost_record_count,
    ips.Version_ghost_record_count,
    ips.min_record_size_in_bytes,
    ips.max_record_size_in_bytes,
    ips.avg_record_size_in_bytes,
    ips.forwarded_record_count
FROM 
    sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') ips
INNER JOIN  
    sys.tables t ON ips.OBJECT_ID = t.Object_ID
INNER JOIN  
    sys.indexes i ON ips.index_id = i.index_id AND ips.OBJECT_ID = i.object_id
WHERE
    AVG_FRAGMENTATION_IN_PERCENT > 0.0
ORDER BY
    AVG_FRAGMENTATION_IN_PERCENT, fragment_count
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć wszystkie klucze obce?

  2. Jak zmniejszyć rozmiar tabeli SQL Server, która wzrosła po zmianie typu danych?

  3. Sprawdzanie parametru wejściowego, jeśli nie jest Null, i używanie go w miejscu, w którym w SQL Server

  4. Jak wykonać zapytanie w pętli sql, aby sprawdzić różnicę między wartościami?

  5. Wewnętrzne sprzężenie SQL na wartościach zerowych