[Php-it] Mysql e foreign keys.

Fabio fabiogandola at tiscali.it
Fri May 4 14:14:31 CEST 2007


Ciao a tutti,
cercherò di esser breve e usare un esempio semplice.

Ipotizzo di avere una tabella "anagrafica" con colonne 'nome' e 'cognome' 
con 100.000.000 record.
Nella colonna 'nome' apparirà magari 1.000.000 di volte: 'Fabio', e quindi 
ipotizziamo che butterò via 5 bytes * 1M, cioè 5MiB inutilmente...

Allora, decido di fare una SELECT DISTINCT sulla colonna 'nome' e con quei 
dati creo un'altra tabella "nomi" che contiene i vari nomi presenti nella 
tabella principale.

A questo punto, se metto una Foreign Key che da "anagrafica.nome" fa 
riferimento a "nomi.nome", MySQL sarà in grado di ottimizzare la tabella 
togliendo l'inutile spreco di spazio del milioni di ripetizioni della 
stringa 'Fabio', o meno?

Ovviamente la soluzione + comune, sarebbe nella tabella "nomi" di assegnare 
a ogni nome un ID numerico, e nella tabella "anagrafica" metter l'ID 
numerico del nome, piuttosto che la sua versione in formato stringa.

In sostanza, quello che mi domando, è se con MySQL, se imposto come foreign 
key una colonna varchar, lui è in grado di far automaticamnte 
l'ottimizzazione per evitare di tenere salvate N volte le stesse stringhe?

Grazie!! 



More information about the Php-it mailing list