Inner join vs implicito Join

March 20

Inner join vs implicito Join


La maggior parte dei server di database relazionali moderni usano la Structured Query Language, o SQL, per aggiungere, aggiornare e segnalare informazioni nei database. SELECT di SQL, utilizzato per visualizzare i dati, ha una clausola opzionale chiamato INNER JOIN. Si collega due tavoli insieme temporaneamente in una singola unità. SQL consente di utilizzare INNER JOIN in due modi: implicitamente, specificando le tabelle ed esplicitamente includendo le parole "INNER JOIN" nella sintassi della dichiarazione.

Selezionare

In SQL, l'istruzione SELECT visualizza liste sulla base di dati in un database. Ad esempio, per mostrare un semplice elenco di clienti ordinati per nome, è possibile utilizzare il seguente codice SQL:

SELEZIONE NUM_CLIENTE, nome, città, stato, zip_code DA clienti ORDER BY nome;

INNER JOIN

Un'operazione ISCRIVITI collega due tavoli insieme. La tabella dei clienti, in questo esempio, può avere un campo denominato sales_code che si riferisce ai record corrispondenti in una tabella venditore separata. Elencare le seguenti dichiarazioni le informazioni sul cliente e il nome del venditore. Il primo esempio utilizza JOIN implicitamente, il secondo, in modo esplicito:

SELEZIONE NUM_CLIENTE, nome, città, stato, zip_code, sales_name dai clienti, venditore DOVE customers.sales_code = salesperson.sales_code ORDER BY nome;

SELEZIONE NUM_CLIENTE, nome, città, stato, zip_code, sales_name DA clienti INNER JOIN venditore ON customers.sales_code = salesperson.sales_code ORDER BY nome;

risultati

L'INNER JOIN e implicite unirsi approcci producono gli stessi risultati. Entrambi elencare gli stessi record ordinati nello stesso ordine. Quando si utilizza la sintassi INNER JOIN, questo indica esplicitamente SQL per collegare due tabelle solo sui dischi che hanno in comune. Con la versione implicita, SQL presuppone che si desidera un inner join e collega le tabelle come se si fosse specificato esplicitamente.

Prestazione

La differenza di prestazioni tra INNER JOIN ed implicita unirsi dipende dal server di database, come DB2 di IBM o SQL Server di Microsoft. Nel caso di DB2, l'INNER JOIN è di circa un percent.faster. Prima che il server esegue un SELECT, organizza la dichiarazione in un piano, che è un insieme di passi ottimizzati per raccogliere in modo efficiente i dati. I risultati attesi per entrambi gli approcci sono gli stessi, in modo che il piano è in genere quasi lo stesso. Poiché DB2 mostra una leggera differenza di velocità tra i due metodi, i piani sono probabilmente differenti, ma in modi solo lievi.

La migliore pratica

La sintassi INNER JOIN è un approccio più esplicito più recente di un'istruzione SELECT. L'prestazioni Sito SQL Server consiglia il suo utilizzo rispetto al metodo implicito più vecchio perché è più chiaro. Il formato implicita rende la clausola WHERE eseguire doppio dovere con l'adesione tavoli e la valutazione di test condizionali. Il formato esplicito mantiene le due attività si separano; INNER JOIN fa i dati di giunzione e in cui le prove per i valori specifici.