Quali sono le subquery correlate?

Una sottoquery correlata è un uso sofisticato di SQL.

SQL

I database relazionali più moderni incorporano SQL per aggiungere e aggiornare dati, creare strutture e raccogliere informazioni. SQL è basato su teorie sui dati sviluppate negli anni '70 e viene continuamente perfezionato da allora. Consiste in un insieme di stati, tra cui SELECT, INSERT, CREATE e DELETE, seguiti da diverse clausole che specificano i dati gestiti e le opzioni, ad esempio l'ordinamento e il gruppo. L'uso diffuso dei database è dovuto alla flessibilità e alla sofisticazione di SQL; Permette alle organizzazioni di analizzare complessi gruppi di dati in molti modi.

Query e sottoquery

Un comando SQL per recuperare i dati è chiamato una query. In genere, i programmatori utilizzano l'istruzione SELECT delle query, sebbene molte delle regole per la ricerca dei dati si applichino anche a INSERT, DELETE e UPDATE. Una semplice query SELECT può visualizzare il contenuto di una tabella di dati, ad esempio la seguente istruzione:

SELEZIONA * DA inventario;

Questa query mostra tutti i record in una tabella denominata "Spazio pubblicitario" È possibile ottenere risultati da una query più specifica aggiungendo test condizionali, come in questa istruzione "inventario":

SELECT * FROM inventory WHERE warehouse_code = 'chicago5';

Questa dichiarazione mostra i registri di inventario di un codice di deposito, chicago5.

Una sottoquery è una query all'interno di un'altra query. La seguente dichiarazione elenca i record di inventario di quegli articoli in cui i depositi si trovano in una determinata regione:

SELECT * FROM inventory WHERE warehouse_code IN (SELECT warehouse_code FROM warehouse WHERE region = 'midwest');

Si noti che questa query ha due istruzioni SELECT, una che mostra i record di inventario e un'altra che stabilisce la query principale con i codici di deposito.

Sottoquery correlata

In una sottoquery correlata, le query principali e subordinate estraggono i dati dalla stessa tabella. La query interna esegue una funzione di aggregazione, ad esempio una statistica, e invia queste informazioni alla query esterna, che la utilizza come base per un confronto. Ad esempio, questa sottoquery correlata produce un elenco di record di inventario per articoli con prezzi superiori alla media di un deposito. La query esterna passa le informazioni dal deposito alla query interna e la query interna invia il prezzo medio alla query esterna:

SELEZIONA numero_part, prezzo, codice_di_ magazzino DALL'inventario i1 WHERE prezzo> (SELEZIONA AVG (prezzo) DALL'INSTALLAZIONE i2 DOVE warehouse_code.i1 = warehouse_code.i2);

Le due query utilizzano le tabelle alias "I1" e "I2". Sebbene si riferiscano alla stessa tabella, l'uso dell'alias consente di trattare le query come due entità separate.

Svantaggi del funzionamento

Per le sottoquery correlate, SQL valuta la query interna una volta per ogni record nella query esterna. Quando le dimensioni delle tabelle diventano più grandi, il processo richiede più tempo. Se si scopre che una subquery correlata richiede una quantità di tempo eccessiva per il completamento, considerare l'utilizzo di un'alternativa, ad esempio il caricamento di una tabella temporanea con risultati intermedi e quindi l'elaborazione della tabella temporanea direttamente sulla tabella principale con una sottoquery semplice. Sebbene sia meno elegante, può essere molto più veloce.