Mysql
 sql >> Database >  >> RDS >> Mysql

la copia su una tabella temporanea richiede molto tempo

La tabella temporanea potrebbe non essere l'opzione migliore a seconda di ciò che stai cercando di ottenere... Può diventare utile creare una tabella con un po' di consolidamento dei dati per restringere l'ambito delle prossime due richieste, ma raramente è efficiente farlo.

Inoltre, non è possibile accedere più volte alle tabelle temporanee, quindi sarebbe necessario un tavolo reale.

La creazione di una tabella richiede scritture su disco, il che è molto meno efficiente di una pura selezione nella RAM. Usando i metodi di memorizzazione nella cache, puoi recuperare il risultato di una selezione precedente molto velocemente. Puoi usare quella selezione come parte DA delle tue query per renderlo più veloce rispetto al pool in un enorme database. Ma anche allora...

Ci stiamo evolvendo su un set di dati di circa 1A, le grandi query sono risultati prodotti in base ai diritti degli utenti (categoria, negozio,...) abbiamo cercato di creare una tabella per ogni utente indicando i prodotti su cui ha i diritti e quindi usa quella tabella per recuperare i dati senza richiedere enormi condizioni dove ma era comunque lento usando SSD. Quindi abbiamo semplicemente scaricato un'enorme RAM sul server e il SELECT che avremmo usato per riempire le tabelle temporanee viene eseguito per ogni utente al login, quindi utilizzato come DA e tutto è perfetto.