Esecuzione diretta

L'esecuzione diretta rappresenta la modalità più semplice di esecuzione di un'istruzione. Viene compilata una stringa di caratteri contenente un'istruzione Transact-SQL e inviata per l'esecuzione mediante la funzione SQLExecDirect. Dopo avere raggiunto il server, l'istruzione viene compilata da SQL Server in un piano di esecuzione, che viene quindi immediatamente eseguito.

L'esecuzione diretta viene in genere utilizzata dalle applicazioni che compilano ed eseguono istruzioni in fase di esecuzione e rappresenta il metodo più efficiente per le istruzioni eseguite una sola volta. Lo svantaggio con molti database consiste nel fatto che l'istruzione SQL deve essere analizzata e compilata ogni volta che viene eseguita determinando un aumento dell'overhead se l'istruzione viene eseguita più volte.

In SQL Server vengono notevolmente migliorate le prestazioni dell'esecuzione diretta delle istruzioni utilizzate più di frequente negli ambienti multiutente e l'utilizzo di SQLExecDirect con gi marcatori di parametro per le istruzioni SQL utilizzate più di frequente si avvicina all'efficienza dell'esecuzione preparata.

In caso di connessione a un'istanza di SQL Server, il driver ODBC SQL Server Native Client utilizza sp_executesql per trasmettere l'istruzione SQL o il batch specificato su SQLExecDirect. SQL Server dispone della logica per determinare rapidamente se un'istruzione SQL o un batch eseguito con sp_executesql corrisponde all'istruzione o al batch che ha generato un piano di esecuzione che già esiste nella memoria. Se esiste una corrispondenza, SQL Server riutilizza semplicemente il piano esistente anziché compilarne uno nuovo. Ciò significa che le istruzioni SQL utilizzate più di frequente eseguite con SQLExecDirect in un sistema con molti utenti usufruiranno dei molti vantaggi derivanti dal riutilizzo del piano disponibili solo per le stored procedure nelle versioni precedenti di SQL Server.

Il vantaggio di riutilizzare i piani di esecuzione è valido solo quando più utenti eseguono lo stesso batch o la stessa istruzione SQL. Rispettare le seguenti convenzioni di scrittura del codice per aumentare la probabilità che le istruzioni SQL eseguite da client diversi siano simili abbastanza per potere riutilizzare i piani di esecuzione:

  • Non includere costanti di dati nelle istruzioni SQL; utilizzare invece i marcatori di parametro associati alle variabili di programma. Per ulteriori informazioni, vedere Utilizzo dei parametri delle istruzioni.

  • Utilizzare nomi di oggetto completi. I piani di esecuzione non vengono riutilizzati se i nomi di oggetto non sono completi.

  • Se possibile, utilizzare per le connessioni dell'applicazione un set comune di opzioni dell'istruzione e di connessione. I piani di esecuzione generati per una connessione con un set di opzioni, ad esempio ANSI_NULLS, non vengono riutilizzati per una connessione con un altro set di opzioni. Il driver ODBC di SQL Server Native Client e il provider ODBC di SQL Server Native Client hanno le stesse impostazioni predefinite per queste opzioni.

Se tutte le istruzioni eseguite con SQLExecDirect vengono codificate utilizzando tali convenzioni, in SQL Server sarà possibile, qualora si presentino le condizioni, riutilizzare i piani di esecuzione.

Vedere anche

Concetti

Esecuzione di istruzioni (ODBC)