Gejala
Asumsikan bahwa Anda memiliki tabel menggunakan rangkaian batasan foreign key untuk penghapusan bertingkat, dan statistik pada kolom foreign key tidak mencakup seluruh rentang nilai utama dalam tabel (misalnya: karena statistik tidak dimutakhirkan setelah distribusi data berubah menjadi tabel). Dalam skenario ini, ketika Anda mencoba menghapus baris yang terkait dengan nilai kunci yang tidak terwakili dalam histogram statistik, dan Pengoptimal kueri menggunakan perkiraan cardinalitas default, operasi Hapus lebih lambat dari yang diharapkan. Anda mungkin juga melihat operasi pemindaian indeks digunakan untuk menemukan baris yang cocok dalam tabel referensi.
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".
Pemecahan Masalah
Masalah ini telah diperbaiki dalam pembaruan kumulatif berikut ini untuk SQL Server:
Catatan: Perbaikan ini hanya diaktifkan ketika Anda mengaktifkan hotfix Optimizer (baik melalui opsi konfigurasi scopang database, petunjuk kueri atau bendera pelacakan 4199).
Tentang pembaruan kumulatif untuk SQL Server:
Setiap pembaruan kumulatif baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Lihat pembaruan kumulatif terbaru untuk SQL Server:
Penyelesaian Masalah
Untuk mengatasi masalah ini, gunakan salah satu metode berikut ini:
-
Gunakan perkiraan cardinalitas warisan. Untuk informasi selengkapnya, lihat perkiraan Cardinality (SQL Server).
-
Hapus penghapusan Cascade dari definisi Foreign Key, dan lakukan operasi penghapusan dengan menggunakan gabungan antara tabel induk dan turunan untuk menyelesaikan penghapusan bertingkat.
-
Memperbarui statistik pada tabel induk dengan FULLSCAN sebelum menghapus data.
Referensi
Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.