[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