Originariamente inviato da forrestG
Al di là dei casi particolari, come modus operandi è meglio 1 query un po' complessa oppure 100 query semplici e veloci ? O semplicemente è da considerare caso per caso ?
Eh questa è una bella domanda...dipende sempre dalle situazioni cmq credo sia meglio avere 1 query un po più complessa ma performante che tante query seppur semplici perchè ipotizzando un uso intensivo della pagina potresti avere 10000 persone che la visualizzano e le query non sono più 100 ma 100*10000 il che è male.


Originariamente inviato da forrestG
Per le natural JOIN prima vado a vedere cosa sono...
Le mie foreign_key sono più che altro di concetto per indicare che la tal colonna è legata ad un altra tabella. Non ho ancora mai utilizzato le reali potenzialità del mezzo.

W l'innnioranza...

Grazie mille!
Yuri
Il NATURAL JOIN è un JOIN però mentre il normale JOIN è un prodotto cartesiamo AxB completo il NATURAL JOIN ti restituisce solo le tuple che hanno effettivamente una relazione con l'altra tabella di JOIN (un po come il JOIN ... ON ...) però te l'ho suggerito perchè magari può avere delle ottimizzazioni che lo rendono più veloce (bisogna sempre testare).

Però il NATURAL JOIN effettua il JOIN prendendo in considerazione proprio le FOREIGN KEY per trovare in automatico gli attributi di JOIN.

Esempio:
codice:
// DEFINIZIONE DELLE TABELLE PER L'ESEMPIO
CREATE TABLE utenti (
  idutente INT10) NOT NULL auto_increment,
  nome VARCHAR(64) NOT NULL,
  PRIMARY KEY (idutente)
) ENGINE=InnoDB;

CREATE TABLE ordini (
  idordine INT(10) NOT NULL auto_increment,
  idutente INT(10),
  totale DECIMAL(5,2),
  PRIMARY KEY (idordine),
  FOREIGN KEY (idutente) REFERENCES utenti(idutente)
) ENGINE=InnoDB;


// INTERROGAZIONE DB
SELECT idutente, nome, idordine, totale
FROM utenti
NATURAL JOIN ordini
restituisce solo le tuple per quegli utenti che realmente hanno effettuato un ordine e l'attributo di JOIN è quello sulla chiave esterna...per questo dico che magari ha qualche ottimizzazione sul funzionamento rispetto al generico JOIN...però è da vedere...