Visualizzazione risultati 1 fino 13 di 13

Discussione: [MySQL] Occupa più spazio un dato di tipo INT o DATE?

  1. #1
    Guest

    Predefinito [MySQL] Occupa più spazio un dato di tipo INT o DATE?

    Attualmente uso il timestamp data l'estrema personalizzazione della data che posso avere, ma c'è anche da dire che salvo esclusivamente date senza minuti e secondi.

    E' meglio continuare a salvare il timestamp oppure è meglio la data? Anche in fatto di byte occupati nel DB dato che i dati sarebbero davvero tanti!

    Grazie

  2. #2
    Guest

    Predefinito

    Qui ce una tabella comparativa

  3. #3
    Guest

    Predefinito

    Grazie per la risposta, a quanto pare occupa 1 byte in meno!


  4. #4
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Calma.
    Ad ognuno il suo tipo di spazio.
    Salvare la data in un altro formato significa non poter più fare operazioni agevoli sulle date.
    Ad esempio non puoi più fare una query che li ordini per data o estrapolare solo le operazioni di una certa data.
    Tieni conto che 4 byte in più non sono nulla alla fine, sono 40MB per 40 milioni di record .... e vedo difficile che tu debba salvare 40 milioni di record e leggerli.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da binarysun Visualizza messaggio
    Calma.
    Ad ognuno il suo tipo di spazio.
    Salvare la data in un altro formato significa non poter più fare operazioni agevoli sulle date.
    Ad esempio non puoi più fare una query che li ordini per data o estrapolare solo le operazioni di una certa data.
    Tieni conto che 4 byte in più non sono nulla alla fine, sono 40MB per 40 milioni di record .... e vedo difficile che tu debba salvare 40 milioni di record e leggerli.
    Io la penso come te.

    Ma per gestire le date in mysql oltre all'approccio tradizionale (che è quello che io giudico corretto) vi sono alcuni, anche programmatori molto in gamba, che salvano in mysql le date nei campi INT (10) valorizzandolo con la funzione time() di php (UNIX TIMESTAMP).

    per fare le query che dici te poi si aiutano con le funzioni:
    mktime()
    strtotime()
    date()

    opportunamente combinate fra loro.

    Io non preferisco utilizzare questa tecnica ma c'è chi si trova così...
    inoltre propendere per una anzichè per un'altra per risparmiare o meno 1 byte di memoria la considero un discorso di lana caprina...
    Ultima modifica di miniscript : 05-03-2011 alle ore 16.38.16

  6. #6
    Guest

    Predefinito

    Io infatti faccio così, salvo il timestamp in un campo INT(11) e poi col PHP la mostro.

    A questo punto rimango come sono, lascio il timestamp e gestisco tutto come ho fatto finora!

    Grazie per le risposte

  7. #7
    Guest

    Predefinito

    Cn un int(11) memorizzi oltre la data anche l'orario cn i secondi.

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da lottoforlife Visualizza messaggio
    Cn un int(11) memorizzi oltre la data anche l'orario cn i secondi.
    con un DATETIME invece cosa fai?

  9. #9
    Guest

    Predefinito

    Di sicuro non lo stesso dato ma occupa 8 bytes invece di 4.
    Ultima modifica di dreadnaut : 06-03-2011 alle ore 00.52.57

  10. #10
    Guest

    Predefinito

    ok... poi però mi dirai come fai ad estrarre i record
    - con un determinato anno
    - comprese fra due date
    - modificare una data aumentandola di 6 mesi

    ... precisiamo... si può fare... in una 10ina di righe di codice...

    e quella 10ina di righe messe qui è là (oltre ad essere meno manutenibili) probabilmente occuperà + spazio di quanto non ne risparmierai salvandola nei campi INT

  11. #11
    Guest

    Predefinito

    con date del PHP passi facilmente al DATETIME e con mktime passi al timestamp 2 righe per ogni passaggio?
    Ultima modifica di dreadnaut : 06-03-2011 alle ore 00.52.45 Motivo: metti le 'o', fai uno sforzo.

  12. #12
    Guest

    Predefinito

    Mi fai questa query in due righi?
    Codice:
    SELECT 
    	COUNT(id_articolo) num_articoli, 
    	CONCAT ('Articoli di ', DATE_FORMAT(data_inserimento, '%M %Y')) as mese_anno 
    FROM articoli 
    GROUP BY YEAR(data_inserimento), MONTH(data_inserimento)
    ... ripeto... probabile che la mia diffidenza sia legata alla mia inesperienza nel gestire le date con l'UNIX
    ... però mò son curioso...
    Ultima modifica di miniscript : 08-03-2011 alle ore 20.13.43

  13. #13
    Guest

    Predefinito

    Puoi usare FROM_UNIXTIME per manipolare le date in timestamp, mi trovo benissimo. Il timestamp è ovunque valido, in qualsiasi ambiente tu lavori, mysql,php, javascript,c, c++,windows,linux etc etc. Cmq resta fermo il fatto ognuno è libero di usare quello che vuole. Se il timestamp viene abbinato ad UNIX è perche è stato, è, e sara' uno dei migliori SO. Non è una caratteristica di UNIX.
    Ultima modifica di lottoforlife : 08-03-2011 alle ore 20.23.13

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •