- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- progettazione database mysql
-
progettazione database mysql
Ciao,
premetto che ho una conoscenza molto frammentaria sulla materia.Che differenza c'è, nella progettazione di un db Mysql, definire un campo INT(2) piuttosto che INT(11), anche se a priori so che il numero non supererà le due cifre (è un esempio)?
La stessa cosa riguarda le stringhe di testo: che differenza c'è tra un VARCHAR(10) e un LONGTEXT, anche sapendo che il testo inserito non supererà mai i 10 caratteri?Ovviamente lo spazio riservato nel secondo caso è maggiore, ma siccome risulta sovradimensionato, cosa succede? Aumentano le dimensioni del database? Diminuiscono le prestazioni? Che altro?
-
@Ministry said:
Che differenza c'è, nella progettazione di un db Mysql, definire un campo INT(2) piuttosto che INT(11), anche se a priori so che il numero non supererà le due cifre (è un esempio)?
Il campo di tipo INT occupa 4 bytes e ammette valori da da -2147483648 a 2147483647 (UNSIGNED). Il numero indicato è opzionale e non indica le cifre che è possibile inserire, ma indica come mysql deve immagazzinare un numero riempendo con spazi o zeri fono a N. Per esempio INT(4) con ZEROFILL, se salvo il numero 43 verrà immagazzinato come 0043. Ciò non toglie che se salvo 654321 verrà immagazzinato integralmente.@Ministry said:
La stessa cosa riguarda le stringhe di testo: che differenza c'è tra un VARCHAR(10) e un LONGTEXT, anche sapendo che il testo inserito non supererà mai i 10 caratteri?
VARCHAR(N) occupa N + 1 bytes con occupazione dinamica fino al massimo di 256 bytes (255+1) o al numero dei byte dichiarati.
LONGTEXT: Può contenere fino a 4.294.967.295 caratteri alfanumerici. La memoria occupata è di (lunghezza) + 4 bytes@Ministry said:
Ovviamente lo spazio riservato nel secondo caso è maggiore, ma siccome risulta sovradimensionato, cosa succede? Aumentano le dimensioni del database? Diminuiscono le prestazioni? Che altro?
Aumentano le dimensioni. Le prestazioni diminuiscono, ma per database piccoli la differenza è irrisoria