was ist der beste Weg, um eine ungefähre Anzahl der Suchergebnisse aus einer Abfrage zu bekommen?

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

Frage

, um es etwas mehr beschreiben, wenn ich ein Bild Karte einer Region, die beim Anklicken eine Abfrage durchgeführt wird, mehr Informationen über die Region zu erhalten.
mein Kunde will, dass ich eine ungefähre Anzahl angezeigt werden von Suchergebnisse während schwebt über diese Region Imagemap.
mein Problem ist, wie Cache-i? oder erhalten diese Zahl ohne stark meine Serverspeicherressourcen erschöpft?
btw im, PHP und MySQL verwenden, wenn das ist eine notwendige Informationen.

War es hilfreich?

Lösung

Sie können in regelmäßigen Abständen die Abfrage ausführen und dann die Ergebnisse speichern (beispielsweise in einer anderen Tabelle).

Die Ergebnisse würden nicht absolut up-to-date, aber wäre eine gute Annäherung sein und würde die Last auf dem Server reduzieren.

Andere Tipps

MySQL können Sie die ungefähre Anzahl der Zeilen geben, die von Ihrer Abfrage zurückgegeben werden würde, ohne die Abfrage tatsächlich ausgeführt wird. Dies ist, was EXPLAIN-Syntax ist für.

Sie führen die Abfrage mit ‚EXPLAIN‘ vor der ‚SELECT‘, und dann in den Reihen Spalte alle Ergebnisse multiplizieren.

Die Genauigkeit ist sehr variabel. Es kann mit einigen Arten von Abfragen arbeiten, aber auf anderen nutzlos. Es nutzt Statistiken über die Daten, dass die MySQL-Optimierer halten.

. Hinweis: ANALYZE mit Tabelle auf dem Tisch in regelmäßigen Abständen (zB einmal im Monat) kann die Genauigkeit dieser Schätzungen verbessern

Sie eine andere Tabelle mit dem IDs der Regionen schaffen könnten, und dann einen Skript erstellen, mit einer langsamen Zeit (Nacht zum Beispiel) alle Regionen läuft über und füllt diese zusätzliche Tabelle mit den Daten.

Dann, wenn Sie schweben Sie die ID von diesem neuen Tisch zu bekommen, und die höchstens einen Tag alt.

Das Problem mit, dass könnte sein, dass Sie nicht über eine langsame Zeit haben, oder dass der Durchlauf, dass in der Nacht geschehen ist, dauert eine lange Zeit und ist sehr Prozess schwer.

EDIT auf Ihren Kommentar.

Nehmen Sie eine große Region oder ein Land, wenn Sie können, führen Sie eine Abfrage dieser Region innerhalb der SQL-Browser der Wahl und überprüfen Sie die Auszeit es dauern würde.

Wenn es zu viel ist, dass Sie es so bestimmte Länder zu bestimmten Stunden werden ausgeführt verteilen könnten, kleine Länder zusammen und große Länder allein in einiger Zeit.

Ist Ihre Sorge, dass Sie für diese Informationen überhaupt nicht in die Datenbank gehen wollen, wenn der Roll jemals Ereignis eintritt, oder ist es, dass Sie die Abfrage denken zu langsam sein wird, und Sie wollen die Informationen aus der Datenbank , aber schneller?

Wenn Sie eine langsame Abfrage haben, können Sie tune es, oder einige der anderen Vorschläge nutzen bereits gegeben.

Alternativ und eine Datenbank zu vermeiden, ganz getroffen, so scheint es, dass Sie eine endliche Anzahl von Regionen auf dieser Karte haben, und Sie können eine Abfrage in regelmäßigen Abständen für alle Regionen laufen und die Zahlen in Erinnerung behalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top