Share via


Query-hints toevoegen aan een plangids

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Elke combinatie van geldige query-hints kan worden gebruikt in een planhandleiding. Wanneer een planhandleiding overeenkomt met een query, wordt de OPTION-component die is opgegeven in de hints-component van een planhandleiding toegevoegd aan de query voordat deze wordt gecompileerd en geoptimaliseerd. Als een query die overeenkomt met een planhandleiding al een OPTION-clausule heeft, vervangen de queryhints die zijn gespecificeerd in de planhandleiding die in de query zijn gespecificeerd. Voor een planhandleiding die overeenkomt met een query die al een OPTION-component heeft, moet u echter de OPTION-component van die query opnemen wanneer u de tekst van de query opgeeft die moet overeenkomen in de instructie sp_create_plan_guide. Als u wilt dat de hints die zijn opgegeven in de planhandleiding worden toegevoegd aan de hints die al in de query aanwezig zijn, in plaats van deze te vervangen, moet u zowel de oorspronkelijke hints als de aanvullende hints in de OPTION-component van de planhandleiding opgeven.

Waarschuwing

Planhandleidingen die queryhints misbruiken, kunnen compilatie-, uitvoerings- of prestatieproblemen veroorzaken. Planhandleidingen mogen alleen worden gebruikt door ervaren ontwikkelaars en databasebeheerders.

Veelgebruikte queryhints in planhandleidingen

Query's die kunnen profiteren van planhandleidingen zijn over het algemeen op parameters gebaseerd en presteren mogelijk slecht omdat ze queryplannen in de cache gebruiken waarvan de parameterwaarden geen slechtste of meest representatieve scenario vertegenwoordigen. De queryhints OPTIMIZE FOR en RECOMPILE kunnen worden gebruikt om dit probleem op te lossen. OPTIMIZE FOR geeft SQL Server opdracht om een bepaalde waarde voor een parameter te gebruiken wanneer de query is geoptimaliseerd. MET RECOMPILE wordt de server geïnstrueerd om een queryplan na uitvoering te verwijderen, waardoor de queryoptimalisatie wordt gedwongen een nieuw queryplan opnieuw te compileren wanneer dezelfde query de volgende keer wordt uitgevoerd. Zie Planhandleidingen voor een voorbeeld.

Daarnaast kunt u de tabelhints INDEX, FORCESCAN en FORCESEEK opgeven als queryhints. Wanneer deze hints zijn opgegeven als query hints, gedragen deze hints zich als een inline tabel of weergave hint. De INDEX-hint dwingt de queryoptimalisatie af om alleen de opgegeven indexen te gebruiken voor toegang tot de gegevens in de tabel of weergave waarnaar wordt verwezen. De hint FORCESEEK dwingt de optimizer af om alleen een indexzoekbewerking te gebruiken om toegang te krijgen tot de gegevens in de tabel of weergave waarnaar wordt verwezen. Deze hints bieden aanvullende functionaliteit voor planhandleidingen en bieden meer invloed op de optimalisatie van query's die gebruikmaken van de planhandleiding.