• User Attivo

    Ottimizzare query

    Ho una query del tipo:

    "SELECT COUNT(*) AS numero FROM tabella1 WHERE id IN (SELECT campo1 FROM tabella2 WHERE campo2=nome_campo)"

    Questa query è necessaria per effettuare dei conteggi, ma essendo i record da verificare molti mi rallenta il sistema. Avete qualche consiglio da darmi?
    Ad esempio potrebbero migliorare le prestazioni se invece di fare un "WHERE id IN (" eseguissi prima la seconda query poi per ogni risultato trovato, mediante un while o un foreach eseguissi la prima query?:?


  • User Attivo

    Il modo più semplice per velocizzare la tua query è quella di creare degl'indici.
    In tabella2 devi creare un indice su campo2.
    E di conseguenza in tabella1 anche il campo ID deve avere un indice.
    In questo modo mysql riesce a trovare più facilmente i record.

    Non credo cambi molto ma sostituisci "SELECT COUNT(*)" con "SELECT COUNT(1)".


  • User Attivo

    Grazie mille:smile5:
    Provo a mettere in pratica quanto mi hai consigliato.