Dato che hai 47 milioni di righe e stai utilizzando il database per la segnalazione, allora stiamo parlando di un tipo di applicazione Data Mart / Warehouse piuttosto che un'applicazione OLTP.
È necessario considerare l'utilizzo di uno schema a stella per iniziare e si può (in base alle funzionalità nel database scelto) creare tabelle aggregate statiche connesse a tabelle di dimensioni per fornire riepiloghi utilizzando l'elaborazione in batch. Quanto sopra ti fornirà prestazioni migliori e probabilmente meno indici. È possibile ottenere ulteriori prestazioni interrompendo (alcuni) i propri indici durante il caricamento e ricostituendoli al termine del caricamento. Costruire un indice oltre 47 milioni di file è molto veloce.
Soprattutto, è necessario giustificare la necessità di ogni indice come pratica generale di progettazione del database. Questo può essere fatto solo esaminando, in dettaglio, le esigenze di segnalazione degli utenti. Ricorda che anche se definisci gli indici, la tua query potrebbe non usarne uno o più, quindi l'utente ha bisogno, l'analisi delle query e una buona progettazione del database dovrebbero aiutarti a determinare esattamente se utilizzare un indice o meno e il tipo di indice richiesto.
Ho progettato diversi database e data mart, ma onestamente, non ho mai visto quel numero di indici per tabella.