Procedura: Utilizzo KEEPFIXED PLAN per disattivare ricompilazioni di stored procedure

Traduzione articoli Traduzione articoli
Identificativo articolo: 276220 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In alcune situazioni in cui vengono ricompilate stored procedure, il costo della ricompilazione potrebbe superano il vantaggio che deriva da questa operazione. Nota Poiché SQL Server Service Pack 2 (SP2) e versioni precedenti non supportano la ricompilazione di livello di istruzione, l'intera stored procedure dovrà essere ricompilata quando viene attivata una ricompilazione. Pertanto, il numero di ricompilazioni che vengono attivate durante l'esecuzione di una stored procedure e la lunghezza della stored procedure può talvolta aumentare la durata complessiva dell'esecuzione di stored procedure.

A partire da SQL Server 7.0 SP3, è stato introdotto un nuovo suggerimento di query, KEEPFIXED PLAN , consente in situazioni in cui il costo della ricompilazione è più il costo dell'utilizzo il piano esistente.

L'hint di query KEEPFIXED PLAN impone a query optimizer non ricompilare una query a causa di modifiche della colonna indicizzata (ad esempio, aggiornamento, eliminazione o inserimento) o modifiche nelle statistiche. Per ulteriori informazioni sulla risoluzione di ricompilazione delle stored procedure, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
243586INF: Troubleshooting ricompilazione delle stored procedure

Codice di esempio che utilizza parametri KEEPFIXED PLAN

Il codice di esempio in questa sezione è dal seguente articolo della Microsoft Knowledge Base:
243586INF: Troubleshooting ricompilazione delle stored procedure
   drop procedure RowModifications 
   go
   create procedure RowModifications as
   -- assume SomeTable exists with the same definition as #t, 
   -- and has over 1000 rows
   create table  #t (a int )
   select * from  #t
   insert  #t select * from retest
   select count(*) from #t  where a = 37
   --option (keepfixed plan)
   go
   exec RowModifications
   go
   exec RowModifications
   go 
 
				
Per la seconda esecuzione della procedura RowModifications , il codice riportato di seguito causa la ricompilazione:
  select count(*) from #t where a = 37
				
se si utilizza questo codice:
Option (keepfixed plan)
				
in questa query, la query non causa la ricompilazione nuovamente:
select count(*) from #t  where a = 37 option (keepfixed plan) 
				
Nota questo hint di query viene applicato a livello di istruzione e non influisce sull'ambito dell'intera stored procedure. Se si desidera che questa opzione per applicare più istruzioni in una stored procedure, l'hint per l'applicazione di SQL Server a un comportamento è necessario implementare anche ogni istruzione. Questo hint non è disponibile per SQL Server 7.0 Service Pack 2 (SP2) o versioni precedenti.

Proprietà

Identificativo articolo: 276220 - Ultima modifica: mercoledì 19 luglio 2006 - Revisione: 5.4
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
Chiavi: 
kbmt kbhowtomaster kbinfo KB276220 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 276220
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com