Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    18

    Performance SELECT SUM con campi indicizzato

    Domanda: se faccio una query di tipo SELECT SUM, utilizzando un campo indicizzato, in una tabella INNO_DB con circa 50000 record, che degrado ho intermini di perofrmance rispetto ad una semplice query di SELECT

    Es.
    SELECT SUM (importo) FROM tabella WHERE id=x
    dove ID è un campo indicizzato

    oppure

    SELECT totale FROM from tabella2 WHERE id=x

    C'è un degrado sensibile nella prestazioni utilizzando SELECT SUM?

    :master:

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    18
    Pongo la domanda anche in un altro modo.
    Essendo il campo che ID indicizzato, vengono effettivamente analizzati solo i record corrispondenti all'ID, e non tutti gli altri?
    In questo caso, dato che in media posso avere 5 record con lo stesso id, non si dovrebbe avere un impatto significativo sulle performance, o sbaglio?

  3. #3
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    Scusami ma che tipo di dati ha il campo totale?
    Poichè utilizzando
    Codice PHP:
    SELECT SUM (importoFROM tabella WHERE id=
    è consigliato x la somma di due colonne in modo da ottenere il totale.
    mentre nella seconda richiedi solamente il contenuto della varibile totale
    Codice PHP:
    SELECT totale FROM from tabella2 WHERE id=
    Tu cosa devi fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    18
    Ho provato ad utilizzare EXPLAIN SELECT SUM, e mi indica ROWS 4: questo dato dovrebbe essere il numero effettivo di rows analizzate, giusto? che corrisponde con i campi effettivamente interessati dalla SELECT SUM, cioè i campi che soddisfano la condizione WHERE
    Infatti se faccio EXPLAIN SELECT SUM, utilizzando come campo condizionale nella clausola WHERE un campo non indicizzato, ROWS restituisce il numero totale di campi nella tabella.

    Me la canto e me la suono in questo topic...
    Mi confermate che non sto scrivendo cavolate?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    18
    Originariamente inviato da mariox
    Scusami ma che tipo di dati ha il campo totale?
    Poichè utilizzando
    Codice PHP:
    SELECT SUM (importoFROM tabella WHERE id=
    è consigliato x la somma di due colonne in modo da ottenere il totale.
    mentre nella seconda richiedi solamente il contenuto della varibile totale
    Codice PHP:
    SELECT totale FROM from tabella2 WHERE id=
    Tu cosa devi fare?
    Allora, io ho una tabella dove ho inserito degli articoli, ogni articolo può essere inserito più volte ed è contraddistinto da un ID, devo calcolare il totale degli importi per ogni articolo inserito.

    Cerco di spiegarmi meglio, questa è la mia tabella semplificata

    ARTICOLO ID IMPORTO
    Articolo1 1 100
    Articolo1 1 200
    Articolo2 2 120
    Articolo2 2 150
    ecc.

    Quindi io, per ogni articolo, devo sapere il totale deggli importi, quindi in questo caso
    Articolo1 Tot. Importo= 300
    Articolo2 Tot. Importo= 270

    Stavo valutando se farlo con SELECT SUM ogni volta, oppure inserire il valore totale importo per ogni articolo in un altra tabella, e poi richiamare il totale da quella tabella con una SELECT semplice. Per una serie di ragioni, preferirei usare la SELECT SUM, solo non vorrei che carica troppo di lavoro il DB.

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.