Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Колко често трябва да се възстановяват индексите в нашата база данни на SQL Server?

Има общ консенсус, че трябва да реорганизирате („дефрагментирате“) индексите си веднага щом фрагментацията на индекса достигне повече от 5 (понякога 10%) и трябва да ги възстановите напълно, когато надхвърли 30% (поне това са числата, които аз чувал съм да се препоръчва на много места).

Michelle Ufford (известна още като "SQL Fool") има скрипт за автоматично дефрагментиране на индекс , който използва тези точни ограничения, за да реши кога да реорганизира или изгради отново индекс.

Вижте също съветите на Брад Макгий за повторно изграждане на индекси с някои добри мисли и съвети как да се справите с възстановяването на индекса.

Използвам този скрипт тук (не мога да си спомня кога го получих - от когото и да беше:много благодаря! Наистина полезни неща), за да покажа фрагментацията на индекса на всички ваши индекси в дадена база данни:

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. Разбиране на SQL Server ALTER TABLE ADD COLUMN Инструкция

  2. Проблем със SSIS Неуспешно дешифриране на защитен XML възел

  3. ПРОВЕРЕТЕ ОГРАНИЧЕНИЕТО на множество колони

  4. Имате нужда от помощ при динамична заявка с клауза IN

  5. Невалидно име на обект след възстановяване на база данни на SQL Server 2008