Bir SQL tablosundaki bir INSERT'in birçok nedenden dolayı yavaş olabileceğini biliyorum:
- Masada INSERT TRIGGER'lerin varlığı
- Kontrol edilmesi gereken çok sayıda zorlama kısıtlaması (genellikle yabancı anahtarlar)
- Tablonun ortasına bir satır eklendiğinde, sayfa kümelenmiş dizinde bölünüyor
- İlgili tüm kümelenmemiş dizinleri güncelleme
- Tablodaki diğer etkinliklerden engelleme
- Kötü IO yazma süresi
- ... özlediğim bir şey var mı?
Özel durumumda hangisinin sorumlu olduğunu nasıl söyleyebilirim? Sayfa bölmelerinin, kümelenmemiş dizin güncelleştirmelerinin vs diğerlerinin etkisini nasıl ölçebilirim?
Bir seferde yaklaşık 10.000 satır ekleyen (geçici bir tablodan), 10k satır başına yaklaşık 90 saniye alan bir depolanmış procum var. Bu kabul edilemez derecede yavaş, çünkü diğer örümceklerin zaman aşımına uğramasına neden oluyor.
Yürütme planına baktım ve INSERT CLUSTERED INDEX görevini ve FK aramalarından tüm INDEX SEEKS'i görüyorum, ancak hala neden bu kadar uzun sürdüğünden emin değil. Tetikleyici yok, ancak tabloda bir avuç FKey var (bu durum düzgün bir şekilde indekslenmiş gibi görünüyor).
Bu bir SQL 2000 veritabanıdır.