Meglio più righe o più colonne?

di il
7 risposte

Meglio più righe o più colonne?

Salve avrei una domanda in merito alle performance di una query.
Ho una tabella che deve registrare il peso delle persone in base al giorno del mese non importa ne mese ne anno, solo il giorno da 1 a 30. Ora la mia tabella potrei strutturarla in due modi:
------------------------------
ID | Nome | Giorno | Peso |
------------------------------
Oppure:
------------------------------------------------------------------------------------------------------------------------------------
ID | Nome | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ecc... |
------------------------------------------------------------------------------------------------------------------------------------

Se ci fossero 170.000 utenti che hanno registrato il loro peso avrei, nel primo caso 5.100.000 record
Nel secondo caso solo 170.000 record. Tralasciando la complessità della creazione della query, quale dei due casi sarebbe più veloce in tempi di risposta della query?
Per capirci meglio, vorrei vedere l’utente Marco nel giorno 15 quanto pesa, per recuperare il dato in quale caso sarebbe più veloce?
Spero di essere stato chiaro e che qualcuno sia in grado di rispondermi

7 Risposte

  • Re: Meglio più righe o più colonne?

    La domanda non ha senso.
    La soluzione 2 E' TOTALMENTE SBAGLIATA.

    Tu ragioni in un'UNICA dimensione: n' di record letti.

    MA devi considerare ANCHE il tempo necessario per CARICARE il record in memoria perche' COMUNQUE i record che processi in un certo istante DEVONO essere in memoria, INDIPENDENTEMENTE dal modo in cui sono stati caricati (memory mapped file, lettura diretta, DMA, ...).
    Una cosa e' caricare 100 record da 100 byte, ed un'altra e' caricare 100 record da 1000 byte!

    Inoltre non tieni conto dei meccanismi ESPLICITAMENTE PROGETTATI per velocizzare le query: gli indici!

    In pratica, pretendi di usare soluzioni "casereccie" per evitare di usare dei sistemi "stadard" ed "ottimamente collaudati"
  • Re: Meglio più righe o più colonne?

    Meglio più righe
  • Re: Meglio più righe o più colonne?

    migliorabile ha scritto:


    La domanda non ha senso.
    La soluzione 2 E' TOTALMENTE SBAGLIATA.

    Tu ragioni in un'UNICA dimensione: n' di record letti.

    MA devi considerare ANCHE il tempo necessario per CARICARE il record in memoria perche' COMUNQUE i record che processi in un certo istante DEVONO essere in memoria, INDIPENDENTEMENTE dal modo in cui sono stati caricati (memory mapped file, lettura diretta, DMA, ...).
    Una cosa e' caricare 100 record da 100 byte, ed un'altra e' caricare 100 record da 1000 byte!

    Inoltre non tieni conto dei meccanismi ESPLICITAMENTE PROGETTATI per velocizzare le query: gli indici!

    In pratica, pretendi di usare soluzioni "casereccie" per evitare di usare dei sistemi "stadard" ed "ottimamente collaudati"
    Concordo pienamente.
  • Re: Meglio più righe o più colonne?

    migliorabile ha scritto:


    La domanda non ha senso.
    La soluzione 2 E' TOTALMENTE SBAGLIATA.

    Tu ragioni in un'UNICA dimensione: n' di record letti.

    MA devi considerare ANCHE il tempo necessario per CARICARE il record in memoria perche' COMUNQUE i record che processi in un certo istante DEVONO essere in memoria, INDIPENDENTEMENTE dal modo in cui sono stati caricati (memory mapped file, lettura diretta, DMA, ...).
    Una cosa e' caricare 100 record da 100 byte, ed un'altra e' caricare 100 record da 1000 byte!

    Inoltre non tieni conto dei meccanismi ESPLICITAMENTE PROGETTATI per velocizzare le query: gli indici!

    In pratica, pretendi di usare soluzioni "casereccie" per evitare di usare dei sistemi "stadard" ed "ottimamente collaudati"
    innanzi tutto grazie per la risposta, era ovvio che in entrambi i casi avrei dovuto indicizzare le colonne.
    Mentre aspettavo una vostra risposta mi sono adoperato a creare uno script di python che riempisse le tabelle proprio come nel mio problema, con numero randomici e utenti casuali, il risulato è... la tabella che contiene più righe è grande 1gb con 15.300.000 di record, mentre la tabella che si sviluppa in colonne contiene solo 510.000 record ed è grande 265mb, ovviamente ho indicizzato tutto a dovere, quindi dovrei preferire più colonne per salvaguardare lo spazio? (Considerando che il tempo di esecuzione della query è in entrambi i casi di 0,008 ms)
  • Re: Meglio più righe o più colonne?

    Non puoi indicizzare le colonne

    Poi il tempo di esecuzione delle query va fatto a cache spenta
    Infine che ti frega della dimensione?
  • Re: Meglio più righe o più colonne?

    Mettila così: cosa inciderà di più sulla tua carriera
    - avere avuto a disposizione 735 MB in più sull'hard disk per un paio di anni
    - scoprire tra due anni che avrai bisogno di modifiche radicali al tuo database perché due anni prima hai adottato una soluzione non standard non prevedendone l'evoluzione
    ?
  • Re: Meglio più righe o più colonne?

    Grazie a tutti per i chiarimenti, pensavo che conoscendo già a priori il nome di un determinato dato e che quel dato si ripete in modo fisso, potevo rendere il tutto più leggero. grazie a tutti e buona giornata
Devi accedere o registrarti per scrivere nel forum
7 risposte