KB4023419 – FIX: päring, millel on UNION ALL ja rea siht, võib SQL Server 2014 või uuemates versioonides töötada aeglasemalt, kui seda võrreldakse SQL Server 2008 R2-ga

Rakenduskoht
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) SQL Server 2014 Service Pack 2 - 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 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1

Sümptomid

Kui esitate päringu vaate kohta rakenduses Microsoft SQL Server 2014 või 2016, võib selle lõpuleviimiseks kuluda palju rohkem aega, kui võrdlete seda käivitamisega versioonis SQL Server 2008 R2.

Kui käivitate päringu, mis kasutab klauslit UNION ALL ja reasihtmärki (nt PREdikaat TOP N, FAST N või EXISTS), võite märgata, et SQL Server 2014 või uuemates versioonides töötab päring aeglasemalt, kui võrdlete seda versiooniga SQL Server 2008 R2.

Põhjus

Versioonis SQL Server 2008 R2 muudab päringu optimeerija reaeesmärgi olemasolul erinevate osade järjestust jaotises UNION ALL, nii et kõige odavam osa läheb esimeseks. See võimaldab päringul lõpetada täitmise varem, kui odavamad osad toodavad nõutavat arvu ridu, jätkamata kallimate osade käivitamist. Sellist ümberjärjestamist ei toimu SQL Server uuemates versioonides.

Lahendus

See probleem on lahendatud järgmises SQL Server koondvärskenduses:

SQL Server 2016 RTM koondvärskendus 7

SQL Server 2016 SP1 koondvärskendus 4

SQL Server 2014 SP2 koondvärskendus 6

Märkus Selle probleemi jaoks peab olema lubatud päringuoptija.

Päringu optimeerija ja jälituslippude kohta leiate lisateavet järgmistest linkidest.

SQL Server Query Optimizer hotfix TF 4199 hooldusmudel

DBCC konsooli käsud ja jälituse lipud

Teave SQL Server koondvärskenduste kohta.

Iga uus koondvärskendus SQL Server sisaldab kõiki kiirparandusi ja kõiki turbeparandusi, mis olid kaasatud eelmise koondvärskenduse. Vaadake uusimaid SQL Server koondvärskendusi.

Uusim koondvärskendus SQL Server 2016 jaoks

Uusim koondvärskendus SQL Server 2014 jaoks

Olek

Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.

Viited

Lisateave Microsofti tarkvaravärskenduste terminoloogia kohta.