Sommario:
Definizione: che cosa significa Query Optimizer?
Un ottimizzatore di query è un componente di sistema di gestione di database critico (DBMS) che analizza le query SQL (Structured Query Language) e determina meccanismi di esecuzione efficienti. Un Query Optimizer genera uno o più piani di query per ogni query, ognuno dei quali può essere un meccanismo utilizzato per eseguire una query. Il piano di query più efficiente viene selezionato e utilizzato per eseguire la query.
Gli utenti del database non interagiscono in genere con un Query Optimizer, che funziona in background.
Techopedia spiega Query Optimizer
Le query SQL possono essere istruzioni semplici o complesse. Ogni istruzione SQL richiede un utilizzo minimo di risorse preziose, come letture del disco e memoria del server. Query Optimizer garantisce ciò, nonché un'esecuzione accelerata di ogni query SQL. Ad esempio, un Query Optimizer può generare una serie di piani di query in base ai costi delle risorse. Un piano di query può comportare la lettura di una tabella per recuperare un sottoinsieme dei suoi dati, mentre un altro può comportare l'utilizzo di indici di tabella per una lettura rapida dei dati. Questi sono noti come ottimizzatori basati sui costi.
Un Query Optimizer può selezionare diversi piani di query per la stessa query, a seconda delle circostanze ambientali. Ad esempio, un utente esegue una query che seleziona circa la metà dei dati di una tabella. L'utente esegue la query quando il server è pesantemente incaricato di più connessioni simultanee. In questo scenario, Query Optimizer potrebbe decidere di utilizzare un piano di query che chiama gli indici di tabella creati per soddisfare la query, in base a risorse limitate. Ciò garantisce un drenaggio minimo del server da parte della query. Eseguendo la stessa query in un altro momento con più risorse, Query Optimizer potrebbe determinare che la limitazione delle risorse non costituisce un problema. In questo caso, gli indici di tabella non verrebbero utilizzati e Query Optimizer consentirebbe il caricamento completo della tabella nella memoria del server.