qual'è in mysql il tipo di campo che occupa meno memoria, TINYINT o qualcosaltro?
in pratica mi serve memorizzare solo due opzioni 1/0 o vero/falso
qual'è in mysql il tipo di campo che occupa meno memoria, TINYINT o qualcosaltro?
in pratica mi serve memorizzare solo due opzioni 1/0 o vero/falso
Errare humanum est, perseverare ovest
usa:
nomecampo enum('vero','falso')
o
nomecampo enum('1','0')
o
nomecampo enum('Y','F')
insomma...enum('valore1','valore2','valore3',...)
![]()
questo ENUM mi sembra un pò un casino, ma allora basterebbe mettere[supersaibal]Originariamente inviato da ilc0rv0
usa:
nomecampo enum('vero','falso')
o
nomecampo enum('1','0')
o
nomecampo enum('Y','F')
insomma...enum('valore1','valore2','valore3',...)
[/supersaibal]
nomecampo ENUM('1') default ""
così avremo 0 nella posizione zero e 1 nella prima
(l'1 da il permesso di ingresso in un'area con login)
Errare humanum est, perseverare ovest
enum ti mette solo quello che hai dichiarato. Se metti un numero 0/1 usa TINYINT. Occupa un byte. che e' poi il tipo di campo suggerito nel manuale mysql per sostituire il campo bool...[supersaibal]Originariamente inviato da carlo2002
questo ENUM mi sembra un pò un casino, ma allora basterebbe mettere
nomecampo ENUM('1') default ""
così avremo 0 nella posizione zero e 1 nella prima
(l'1 da il permesso di ingresso in un'area con login) [/supersaibal]
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
meglio, mi sembra anche più semplice poi da gestire, proprio nel caso 0/1 ENUM mi sembra generare un pò di confusione.[supersaibal]Originariamente inviato da piero.mac
enum ti mette solo quello che hai dichiarato. Se metti un numero 0/1 usa TINYINT. Occupa un byte. che e' poi il tipo di campo suggerito nel manuale mysql per sostituire il campo bool...
[/supersaibal]
![]()
Errare humanum est, perseverare ovest
ok...mi avete smontato![]()
![]()
![]()
![]()
ahahhaah![]()
no, anzi grazie per l'intervento, almeno mi sono guardato ENUM e SET che non avevo mai considerato.[supersaibal]Originariamente inviato da ilc0rv0
ok...mi avete smontato![]()
![]()
![]()
![]()
ahahhaah[/supersaibal]
![]()
Errare humanum est, perseverare ovest
Piu che confusione .. ENUM e' piu' indicato per valori stringa. Se vedi il manuale dice chiaramente di usare TINYINT(1) per i campi di tipo booleano. I campi nmerici sono piu' performanti e meno esigenti nello spazio occupato.[supersaibal]Originariamente inviato da carlo2002
meglio, mi sembra anche più semplice poi da gestire, proprio nel caso 0/1 ENUM mi sembra generare un pò di confusione.
[/supersaibal]
Si potrebbe pure usare char(0), mi pare con NULL e EMPTY ma e' una complicazione da gestire. Piu' naturale l'uso di 0/1
Ti faccio un esempio di uso con tinyint 0/1 se hai mysql 4.1 si puo' usare TRUE e FALSE.
SELECT *, IF(campo = TRUE, 1, 0) as bool FROM tabella.
Riconosce come TRUE solo i campi con 1 e FALSE tutti gli altri, quindi e' pure FALSE se > 1. A che serve? per esempio se il campo e' TRUE prendi una cosa, se FALSE un'altra...
SELECT id, nome, IF(campo = TRUE, P_IVA, COD_fiscale) as cod FROM tabella.
se campo = TRUE prendi partita iva, altrimenti il codice fiscale
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.