qual è il modo migliore per ottenere un numero approssimativo di risultati di ricerca da una query?
-
03-07-2019 - |
Domanda
per descriverlo un po 'di più, se ho una mappa immagine di una regione che quando viene cliccata, viene eseguita una query per ottenere maggiori informazioni su quella regione.
il mio cliente vuole che visualizzi un numero approssimativo di risultati di ricerca passando con il mouse sopra la mappa immagine di quella regione.
il mio problema è come posso memorizzare nella cache? o ottenere quel numero senza esaurire pesantemente le risorse di memoria del mio server?
btw sto usando php e mysql se questa è un'informazione necessaria.
Soluzione
È possibile eseguire periodicamente la query e quindi archiviare i risultati (ad es. in una tabella diversa).
I risultati non sarebbero assolutamente aggiornati, ma sarebbero una buona approssimazione e ridurrebbero il carico sul server.
Altri suggerimenti
MySQL può fornirti il ??numero approssimativo di righe che verrebbero restituite dalla tua query, senza effettivamente eseguirla. Ecco a cosa serve la sintassi EXPLAIN.
Esegui la query con 'EXPLAIN' prima di 'SELECT', quindi moltiplica tutti i risultati nella colonna delle righe.
La precisione è altamente variabile. Potrebbe funzionare con alcuni tipi di query, ma essere inutile per altri. Fa uso delle statistiche sui tuoi dati conservate dall'ottimizzatore di MySQL.
Nota: l'uso periodico di TABELLA ANALISI sulla tabella (ovvero una volta al mese) può aiutare a migliorare l'accuratezza di queste stime.
È possibile creare un'altra tabella con gli ID delle regioni, quindi creare uno script che viene eseguito su tutte le aree in un momento lento (ad esempio la notte) e popola questa tabella aggiuntiva con i dati.
Quindi quando passi con il mouse ottieni l'ID da questa nuova tabella, ed è al massimo un giorno prima.
Il problema potrebbe essere che non si ha un tempo lento o che il rodaggio che si svolge di notte richiede molto tempo ed è molto pesante.
MODIFICA al tuo commento.
Prendi una grande regione o un paese, se puoi, esegui una query di quella regione nel tuo browser SQL preferito e controlla il tempo necessario.
Se è troppo, è possibile distribuirlo in modo che determinati paesi vengano eseguiti a determinate ore, piccoli paesi insieme e grandi paesi da soli in un certo periodo.
Sei preoccupato di non voler andare al database per ottenere queste informazioni quando si verifica l'evento roll-ever, oppure pensi che la query sia troppo lenta e desideri le informazioni dal database , ma più veloce?
Se hai una query lenta, puoi ottimizzarla o utilizzare alcuni degli altri suggerimenti già forniti.
In alternativa, e per evitare del tutto un colpo al database, sembra che ci sia un numero finito di regioni su questa mappa, ed è possibile eseguire periodicamente una query per tutte le regioni e mantenere i numeri in memoria.