Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Seberapa sering indeks harus dibangun kembali di database SQL Server kami?

Ada konsensus umum bahwa Anda harus mengatur ulang ("defragmentasi") indeks Anda segera setelah fragmentasi indeks mencapai lebih dari 5 (kadang-kadang 10%), dan Anda harus membangunnya kembali sepenuhnya ketika melampaui 30% (setidaknya itulah angka yang saya ' pernah mendengar advokasi di banyak tempat).

Michelle Ufford (alias "SQL Fool") memiliki skrip defrag indeks otomatis , yang menggunakan batas tepat tersebut untuk memutuskan kapan harus mengatur ulang atau membangun kembali indeks.

Lihat juga tips Brad McGehee tentang membangun kembali indeks dengan beberapa pemikiran dan tips bagus tentang cara menangani pembangunan kembali indeks.

Saya menggunakan skrip ini di sini (tidak ingat kapan saya mendapatkannya - siapa pun itu:terima kasih banyak! Hal-hal yang sangat membantu) untuk menampilkan fragmentasi indeks pada semua indeks Anda dalam database yang diberikan:

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. Mengelompokkan total pengguna aktif untuk masing-masing dari 8 minggu sebelumnya

  2. Hindari Penamaan User Stored Procedures SP% atau SP_%

  3. Perintah Bersyarat SQL Server Oleh

  4. Hubungkan PHP ke MSSQL melalui PDO ODBC

  5. 7 Cara Menemukan Baris Duplikat di SQL Server sambil Mengabaikan Kunci Utama apa pun