Level teratas dari rencana berkaitan dengan menghilangkan baris dari tabel dasar (indeks berkerumun), dan mempertahankan empat indeks yang tidak tercakup. Dua dari indeks ini dipertahankan baris demi baris pada saat yang sama penghapusan indeks berkerumun diproses. Ini adalah "+2 indeks non-clustered" yang disorot dengan warna hijau di bawah ini.
Untuk dua indeks nonclustered lainnya, pengoptimal telah memutuskan yang terbaik untuk menyimpan kunci indeks ini ke meja kerja tempdb (Eager Spool), kemudian memutar spool dua kali, mengurutkan berdasarkan kunci indeks untuk mempromosikan pola akses berurutan.
Urutan akhir operasi berkaitan dengan mempertahankan indeks primer dan sekunder xml
, yang tidak termasuk dalam skrip DDL Anda:
Tidak banyak yang bisa dilakukan mengenai hal ini. Indeks dan indeks yang tidak tercakup xml
harus tetap disinkronkan dengan data di tabel dasar. Biaya mempertahankan indeks tersebut adalah bagian dari trade-off yang Anda lakukan saat membuat indeks tambahan di atas meja.
Yang mengatakan, xml
indeks sangat bermasalah. Sangat sulit bagi pengoptimal untuk secara akurat menilai berapa banyak baris yang memenuhi syarat dalam situasi ini. Bahkan, ini terlalu berlebihan untuk xml
indeks, menghasilkan hampir 12GB memori yang diberikan untuk permintaan ini (meskipun hanya 28MB digunakan saat runtime):
Anda dapat mempertimbangkan melakukan penghapusan dalam batch yang lebih kecil, dengan harapan dapat mengurangi dampak dari pemberian memori yang berlebihan.
Anda juga bisa menguji kinerja rencana tanpa menggunakan jenis OPTION (QUERYTRACEON 8795)
. Ini adalah tanda jejak yang tidak berdokumen sehingga Anda hanya boleh mencobanya pada pengembangan atau sistem pengujian, tidak pernah dalam produksi. Jika paket yang dihasilkan jauh lebih cepat, Anda bisa menangkap paket XML dan menggunakannya untuk membuat Panduan Paket untuk kueri produksi.