sql >> Database >  >> RDS >> Sqlserver

Hoe vaak moeten de indexen opnieuw worden opgebouwd in onze SQL Server-database?

Er is een algemene consensus dat u uw indices moet reorganiseren ("defragmenteren") zodra de indexfragmentatie meer dan 5 (soms 10%) bereikt, en dat u ze volledig opnieuw moet opbouwen wanneer deze verder gaat dan 30% (tenminste dat zijn de cijfers die ik' heb het op veel plaatsen gehoord).

Michelle Ufford (ook bekend als "SQL Fool") heeft een automatisch indexdefrag-script , die die exacte limieten gebruikt om te beslissen wanneer een index moet worden gereorganiseerd of opnieuw moet worden opgebouwd.

Zie ook Brad McGehee's tips over het opnieuw opbouwen van indexen met enkele goede gedachten en tips over hoe om te gaan met het opnieuw opbouwen van indexen.

Ik gebruik dit script hier (kan me niet herinneren wanneer ik dit heb gekregen - van wie het ook was:hartelijk dank! Echt nuttige dingen) om de indexfragmentatie op al uw indices in een bepaalde database weer te geven:

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. Kolomnamen met regeleinden

  2. Zeer lange openingstijd van de SQL-verbinding

  3. Gebruikersverwijzingssysteem met PHP en MySQL

  4. Hoe maak je een veld met een lijst met externe sleutels in SQLAlchemy?