Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746

    [mysql] campo + piccolo

    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

  2. #2
    usa:
    nomecampo enum('vero','falso')
    o
    nomecampo enum('1','0')
    o
    nomecampo enum('Y','F')

    insomma...enum('valore1','valore2','valore3',...)

  3. #3
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    [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]
    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)
    Errare humanum est, perseverare ovest

  4. #4
    [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]
    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...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    [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]
    meglio, mi sembra anche più semplice poi da gestire, proprio nel caso 0/1 ENUM mi sembra generare un pò di confusione.

    Errare humanum est, perseverare ovest

  6. #6
    ok...mi avete smontato
    ahahhaah

  7. #7
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    [supersaibal]Originariamente inviato da ilc0rv0
    ok...mi avete smontato
    ahahhaah [/supersaibal]
    no, anzi grazie per l'intervento, almeno mi sono guardato ENUM e SET che non avevo mai considerato.
    Errare humanum est, perseverare ovest

  8. #8
    [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]
    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.

    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.