Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Direct uitvoeren is de meest basale manier om een instructie uit te voeren. Een applicatie bouwt een tekenreeks met een Transact-SQL-instructie en dient deze in voor uitvoering met de SQLExecDirect-functie . Wanneer de instructie de server bereikt, compileert SQL Server deze in een uitvoeringsplan en voert het vervolgens direct uitvoeringsplan uit.
Directe uitvoering wordt vaak gebruikt door applicaties die statements tijdens runtime bouwen en uitvoeren en is de meest efficiënte methode voor statements die één keer worden uitgevoerd. Het nadeel van veel databases is dat de SQL-instructie elke keer dat deze wordt uitgevoerd moet worden geparsed en gecompileerd, wat extra overhead toevoegt als de instructie meerdere keren wordt uitgevoerd.
SQL Server verbetert aanzienlijk de prestaties van directe uitvoering van veelvoorkomend uitgevoerde statements in multiuser omgevingen en het gebruik van SQLExecDirect met parametermarkers voor veelvoorkomend uitgevoerde SQL-statements kan de efficiëntie van voorbereide uitvoering naderen.
Wanneer de SQL Server Native Client ODBC-driver is verbonden met een instantie van SQL Server, gebruikt hij sp_executesql om de SQL-instructie of batch die op SQLExecDirect is gespecificeerd te verzenden. SQL Server heeft logica om snel te bepalen of een SQL-instructie of batch uitgevoerd met sp_executesql overeenkomt met de instructie of batch die een uitvoeringsplan genereerde dat al in het geheugen bestaat. Als er een match wordt gemaakt, hergebruikt SQL Server simpelweg het bestaande plan in plaats van een nieuw plan te compileren. Dit betekent dat veelgebruikte SQL-instructies die met SQLExecDirect worden uitgevoerd in een systeem met veel gebruikers, profiteren van veel van de voordelen voor hergebruik van het plan die alleen beschikbaar waren voor opgeslagen procedures in eerdere versies van SQL Server.
Dit voordeel van het hergebruiken van uitvoeringsplannen werkt alleen wanneer meerdere gebruikers dezelfde SQL-instructie of batch uitvoeren. Volg deze codeerconventies om de kans te vergroten dat de SQL-instructies die door verschillende clients worden uitgevoerd voldoende op elkaar lijken om uitvoeringsplannen opnieuw te kunnen gebruiken:
Neem geen dataconstanten op in de SQL-instructies; gebruik in plaats daarvan parametermarkers die aan programmavariabelen zijn gebonden. Voor meer informatie, zie Gebruik van Statementparameters.
Gebruik volledig gekwalificeerde objectnamen. Uitvoeringsplannen worden niet hergebruikt als objectnamen niet gekwalificeerd zijn.
Laat applicatieverbindingen zo veel mogelijk een gemeenschappelijke set verbindings- en statementopties gebruiken. Uitvoeringsplannen die voor een verbinding worden gegenereerd met één set opties (zoals ANSI_NULLS), worden niet hergebruikt voor een verbinding met een andere set opties. De SQL Server Native Client ODBC-driver en de SQL Server Native Client OLE DB-provider hebben beide dezelfde standaardinstellingen voor deze opties.
Als alle statements die met SQLExecDirect worden uitgevoerd worden gecodeerd volgens deze conventies, kan SQL Server uitvoeringsplannen hergebruiken wanneer de gelegenheid zich voordoet.