Saya tahu bahwa INSERT pada tabel SQL bisa lambat karena sejumlah alasan:
- Keberadaan INSERT TRIGGER ada di atas meja
- Banyak kendala yang dipaksakan yang harus diperiksa (biasanya kunci asing)
- Halaman terpecah dalam indeks berkerumun ketika baris dimasukkan di tengah tabel
- Memperbarui semua indeks non-cluster terkait
- Memblokir dari aktivitas lain di atas meja
- IO yang buruk menulis waktu respons
- ... apa pun yang saya lewatkan?
Bagaimana saya bisa tahu mana yang bertanggung jawab dalam kasus spesifik saya? Bagaimana saya bisa mengukur dampak dari pemisahan halaman vs pembaruan indeks non-cluster vs yang lainnya?
Saya memiliki proc tersimpan yang menyisipkan sekitar 10.000 baris sekaligus (dari tabel temp), yang membutuhkan waktu sekitar 90 detik per 10k baris. Itu sangat lambat, karena menyebabkan spids lain mati.
Saya telah melihat rencana eksekusi, dan saya melihat tugas INSERT CLUSTERED INDEX dan semua INDEKS PENCARIAN dari pencarian FK, tetapi masih tidak memberi tahu saya pasti mengapa itu memakan waktu begitu lama. Tidak ada pemicu, tetapi tabel memang memiliki beberapa FKeys (yang tampaknya diindeks dengan benar).
Ini adalah database SQL 2000.