qual è il modo migliore per ottenere un numero approssimativo di risultati di ricerca da una query?

StackOverflow https://stackoverflow.com/questions/600972

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top