Yhteenveto
Tässä päivityksessä on uusi kyselyvihjeargumentti USE HINT, jonka avulla voit käyttää kyselyn optimointitoimintoa ilman laajennettuja tunnistetietoja tai olematta sysadmin-palvelinroolin jäsen. Tämän uuden kyselyvihjeen syntaksi on seuraavankaltainen:
<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}
Päivityksessä on myös seuraavat vihjeasetukset, joita voidaan käyttää KÄYTÄ VIHJE -argumentin kanssa.
| Vaihtoehto | Vastaava jäljitysmerkintä | Kuvaus | Koskee seuraavia |
|---|---|---|---|
| ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS | TF 9476 | Saa SQL Server luomaan kyselysuunnitelman käyttämällä yksinkertaisen sisältymisen oletusta liitoksille kyselyn optimoijan kardinaliteetin estimointimallissa SQL Server 2014:ssä (12.x) tai uudemmassa. | |
| ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES | TF 4137 | Saa SQL Server:n luomaan suunnitelman käyttäen vähimmäisselektiivisyyttä arvioidessaan suodattimien AND-predikaatteja korrelaation huomioon ottamiseksi. Tämä vihjeen nimi on rinnakkainen seurantamerkinnän 4137 kanssa, kun sitä käytetään SQL Server 2012:n (11.x) ja aiempien versioiden kardinaliteetin arviointimallin kanssa, ja sillä on samanlainen vaikutus, kun jäljitysmerkintää 9471 käytetään SQL Server 2014:n (12.x) tai uudemman version kardinaliteetin arviointimallin kanssa. | |
| DISABLE_BATCH_MODE_ADAPTIVE_JOINS | Poistaa käytöstä komentojonotilan mukautuvat liitokset. | alkaen SQL Server 2017:ssä | |
| DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK | Poistaa käytöstä erätilan myönnetyn muistimäärän palautteen. | alkaen SQL Server 2017:ssä | |
| DISABLE_DEFERRED_COMPILATION_TV | Poistaa käytöstä taulukon muuttujan lykätyn kääntämisen. | alkaen SQL Server 2019:ssä | |
| DISABLE_INTERLEAVED_EXECUTION_TVF | Poistaa käytöstä monilauseisten taulukkoarvoisten funktioiden lomitetun suoritustoiminnon. | alkaen SQL Server 2017:ssä | |
| DISABLE_OPTIMIZED_NESTED_LOOP | TF 2340 | Ohjeistaa kyselyn käsittelijää olemaan käyttämättä lajittelutoimintoa (erälajittelua) optimoiduissa sisäkkäisissä silmukkaliitoksissa kyselysuunnitelmaa luotaessa. | |
| DISABLE_OPTIMIZER_ROWGOAL | TF 4138 | Saa SQL Server luomaan suunnitelman, joka ei käytä rivitavoitteen muokkauksia kyselyissä, jotka sisältävät seuraavia avainsanoja:
|
|
| DISABLE_PARAMETER_SNIFFING | TF 4136 | Ohjeistaa kyselyn optimoijan käyttämään tietojen keskiarvojakoa käännettäessä kyselyä, jossa on yksi tai useampi parametri. Tämä ohje tekee kyselysuunnitelmasta riippumattoman sen parametrin arvon, jota käytettiin ensimmäisen kerran kyselyä käännettäessä. Tämän vihjeen avulla voit ohittaa tietokantalaajuisen määrityksen asetuksen PARAMETER_SNIFFING=OFF. | |
| DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK | Poistaa käytöstä rivitilan muistimyönnetyn palautteen. | alkaen SQL Server 2019:ssä | |
| DISABLE_TSQL_SCALAR_UDF_INLINING | Poistaa käytöstä skalaarisen UDF-inliningin. | alkaen SQL Server 2019:ssä | |
| DISALLOW_BATCH_MODE | Poistaa käytöstä erätilan suorittamisen. | alkaen SQL Server 2019:ssä | |
| ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS | TF 4139 | Ottaa käyttöön automaattisesti luodut pikatilastot (histogrammin muutokset) mille tahansa johtavalle indeksisarakkeelle, jolle tarvitaan kardinaliteetin estimointia. Kardinaliteetin arvioimiseen käytettävää histogrammia muokataan kyselyn käännösaikana vastaamaan sarakkeen todellista enimmäis- tai vähimmäisarvoa. | |
| ENABLE_QUERY_OPTIMIZER_HOTFIXES | TF 4199 | Ottaa käyttöön kyselyn optimoijan hotfix-korjaukset (muutokset, jotka julkaistaan SQL Server Cumulative Updatet -päivityksissä ja Service Pack -paketeissa). Tämän vihjeen avulla voit ohittaa tietokantalaajuisen määrityksen asetuksen QUERY_OPTIMIZER_HOTFIXES=KÄYTÖSSÄ. | |
| FORCE_DEFAULT_CARDINALITY_ESTIMATION | TF 9481 | Pakottaa kyselyn optimoijan käyttämään tietokannan nykyistä yhteensopivuustasoa vastaavaa kardinaliteetin estimointimallia. Tämän vihjeen avulla voit ohittaa tietokantalaajuisen määrityksen asetuksen LEGACY_CARDINALITY_ESTIMATION=KÄYTÖSSÄ. | |
| FORCE_LEGACY_CARDINALITY_ESTIMATION | TF 9481 | Pakottaa kyselyn optimoijan käyttämään SQL Server 2012:n (11.x) ja aiempien versioiden kardinaliteetin estimointimallia. Tämän vihjeen avulla voit ohittaa tietokantalaajuisen määrityksen asetuksen LEGACY_CARDINALITY_ESTIMATION=KÄYTÖSSÄ. | |
| QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n | Pakottaa kyselyn optimoijan toiminnan kyselytasolla. Tämä tapahtuu aivan kuin kysely olisi käännetty tietokannan yhteensopivuustasolla n, jossa n on tuetun tietokannan yhteensopivuustaso. Kohdassa sys.dm_exec_valid_use_hints on luettelo tällä hetkellä tuetuista n-arvoista. | alkaen SQL Server 2017:stä (14.x) CU10 |
Lisätietoja on artikkelissa Vihjeet (Transact-SQL) – kysely.
Lisätietoja
Tämä päivitys sisältyy SQL Server 2016:n Service Pack 1:een.
Tietoja SQL Server 2016 -koontiversioista
Jokainen uusi SQL Server 2016:n koontiversio sisältää kaikki hotfix-korjaukset ja tietoturvakorjaukset, jotka sisältyivät edelliseen koontiversioon. Suosittelemme, että asennat uusimman SQL Server 2016:n koontiversion.
Skenaariot, joissa tarvitaan vihjeitä SQL Server -kyselyn optimoijan (QO) toimimisesta, ovat melko yleisiä, ja perinteisesti niitä pyritään käsittelemään käyttämällä useita (dokumentoituja ja dokumentoimattomia) jäljitysmerkintöjä. Kun jäljitysmerkinnät asetetaan yleisesti, niillä voi olla haitallinen vaikutus muihin työkuormiin. Lisäksi niiden ottaminen käyttöön istuntokohtaisesti ei ole käytännöllistä olemassa olevissa sovelluksissa, ja niiden ottaminen käyttöön kyselyä kohden OPTION QUERYTRACEON -komennolla edellyttää sysadminin kiinteän palvelinroolin jäsenyyttä. (Vaikka tämän toiminnon voi kiertää käyttämällä suunnitelmaopasta tai tallennettua toimintosarjaa, tarvitaan silti laajennetut tunnistetiedot.)
Jäljitysmerkintöjä käytetään palvelimen tiettyjen ominaisuuksien väliaikaiseen määrittämiseen tai tietyn toiminnan poistamiseen käytöstä. Niitä voi olla vaikea hallita ja ymmärtää.
Lisätietoja seurantamerkinnöistä on Microsoft Developer Network (MSDN) -sivuston ohjeaiheessa Jäljitysmerkinnät (Transact-SQL).
Viitteet
Lue tietoja Microsoftin ohjelmistopäivitystensä kuvaamiseen käyttämästä sanastosta.