KB4051361 - Informasi tujuan baris pengoptimal dalam rencana eksekusi kueri ditambahkan pada SQL Server 2014, 2016, dan 2017

Berlaku Untuk
SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Ringkasan

Tambahkan atribut rencana eksekusi kueri EstimateRowsWithoutRowGoal baru ke SQL Server 2017 Pembaruan Kumulatif 3 (CU3) dan Microsoft SQL Server 2016 Paket Layanan 2 (SP2).

Ketika Pengoptimal Kueri memperkirakan biaya rencana eksekusi kueri, biasanya mengasumsikan bahwa semua baris yang memenuhi syarat dari semua sumber harus diproses. Namun, beberapa kueri menyebabkan Pengoptimal Kueri mencari rencana yang akan mengembalikan lebih sedikit baris lebih cepat. Hal ini dapat terjadi jika kueri menggunakan klausa TOP , petunjuk kueri FAST number_rows , klausa IN atau EXISTS , atau pernyataan SET ROWCOUNT { number | @number\_var } . Dalam kasus ini, pengoptimal menggunakan tujuan baris saat memperkirakan rencana kueri. Jika rencana target baris diterapkan, perkiraan jumlah baris dalam rencana eksekusi kueri akan berkurang. Hal ini dikarenakan rencana mengasumsikan bahwa sejumlah kecil baris harus diproses untuk mencapai tujuan baris.

catatan Perkiraan yang dibuat dengan menggunakan tujuan baris adalah perkiraan. Jika distribusi data aktual tidak seragam, distribusi data mungkin kurang dari jumlah baris sebenarnya yang harus diproses. Oleh karena itu, hal tersebut dapat membuat rencana kueri yang tidak efisien. Sebagai solusi untuk masalah ini, Anda dapat menggunakan opsi kueri GUNAKAN PETUNJUK ('DISABLE_OPTIMIZER_ROWGOAL') atau Bendera Pelacakan 4138.

Untuk informasi selengkapnya, lihat Pembaruan memperkenalkan argumen petunjuk kueri USE HINT di SQL Server 2016. Namun, mungkin sulit untuk mengidentifikasi dalam kueri kompleks apakah tujuan baris diterapkan dan seberapa besar pengaruhnya terhadap pilihan rencana.

Dengan menggunakan atribut EstimateRowsWithoutRowGoal , Anda dapat membandingkan hasil dengan atribut EstimateRows untuk melihat seberapa besar tujuan baris memengaruhi perkiraan Pengoptimal Kueri.

catatan Jika tujuan baris tidak diterapkan ke operator rencana kueri tertentu, atribut ini tidak disertakan.

Informasi Selengkapnya

Pembaruan ini disertakan dalam pembaruan kumulatif berikut untuk SQL Server:

Pembaruan Kumulatif 3 untuk SQL Server 2017

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:

Pembaruan kumulatif terbaru untuk SQL Server 2017

Informasi paket layanan untuk SQL Server

Pembaruan ini diperkenalkan dalam paket layanan berikut untuk SQL Server:

Paket Layanan 2 untuk SQL Server 2016

Paket Layanan 3 untuk SQL Server 2014

Tentang paket layanan untuk SQL Server:

Paket layanan bersifat kumulatif. Setiap paket layanan baru berisi semua perbaikan yang ada dalam paket layanan sebelumnya, bersama dengan perbaikan baru apa pun. Rekomendasi kami adalah menerapkan paket layanan terbaru dan pembaruan kumulatif terbaru untuk paket layanan tersebut. Anda tidak perlu menginstal paket layanan sebelumnya sebelum menginstal paket layanan terbaru. Gunakan Tabel 1 dalam artikel berikut untuk menemukan informasi selengkapnya tentang paket layanan terbaru dan pembaruan kumulatif terbaru.

Cara menentukan versi, edisi, dan tingkat pembaruan SQL Server dan komponennya

Referensi

Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.