Esistono server SQL che supportano le query compilate?

1

Le query SQL possono essere compilate in byte code o equivalenti per migliorare le prestazioni?

So che la maggior parte dei server di database supporta istruzioni preparate, ma è la stessa cosa della compilazione? La maggior parte delle applicazioni deve preparare le istruzioni in fase di esecuzione, quindi non vi è alcun vantaggio del codice byte precompilato. Poiché viene preparato ogni volta che viene eseguita l'applicazione.

Inoltre, non mi riferisco alle stored procedure, ma alle istruzioni SQL strettamente eseguite per ottenere un set di risultati.

    
posta cgTag 01.08.2013 - 12:39
fonte

1 risposta

4

Le istruzioni sono compilate in template, non in byte code. Ma sospetto che questo sia un problema semantico per la tua domanda. La risposta breve è sì, una dichiarazione preparata equivale alla compilazione.

L' articolo di Wikipedia sulle dichiarazioni preparate spiega una serie di elementi che dovrebbero aiutare a chiarire le cose.

1. Prepare: The statement template is created by the application and sent to the database 
management system (DBMS). Certain values are left unspecified, called parameters, 
placeholders or bind variables.

2. The DBMS parses, compiles, and performs query optimization on the statement template, 
and stores the result without executing it.

3. Execute: At a later time, the application supplies (or binds) values for the 
parameters, and the DBMS executes the statement (possibly returning a result). 

E la seguente affermazione chiarisce che l'ottimizzazione (la maggior parte) avviene alla compilazione.

The overhead of compiling and optimizing the statement is incurred only once, although the statement is executed multiple times.

Ma ci sono casi in cui il DBMS deve fare un'ottimizzazione aggiuntiva al tempo della query.

Not all optimization can be performed at the time the prepared statement is compiled, for two reasons: the best plan may depend on the specific values of the parameters, and the best plan may change as tables and indexes change over time

L'articolo indica che DB2, Microsoft SQL Server, MySQL, Oracle e PostgreSQL supportano le istruzioni preparate. Ho usato istruzioni preparate con DB2 e posso verificare che funzionino come spiegato nell'articolo.

    
risposta data 01.08.2013 - 20:55
fonte

Leggi altre domande sui tag