Ich habe eine beträchtliche Menge an Zeit damit verbracht, diesen zu verfolgen. Ich habe eine Box-Autocomplete auf meiner Website (http://www.devbridge.com/projects/autocomplete/jquery/) verwendet. Wenn Sie das Wort eingeben, wird es als GET-Variable an eine Seite zur Verarbeitung gesendet, in der es in einer mySQL-Datenbank gesucht wird. Die Seite sieht folgendermaßen aus:Autovervollständigen langsam mit großer Datenbanksuche
$get = $_GET['query'];
$query = "SELECT title,author,id,isbn10,isbn13 FROM textbook
WHERE title LIKE '" . $get . "%'
OR author LIKE '" . $get . "%'
LIMIT 5
";
$result = mysql_query($query,$connection);
$resString = "";
$idString = "";
while($data = mysql_fetch_array($result)){
$resString .= "'" . title($data['title']) . " by " . $data['author'] . "',";
$idString .= "'" . $data['id'] . "',";
}
$resString = rtrim($resString, ',');
$idString = rtrim($idString, ',');
$code = "{\n";
$code .= "query:'" . $get . "',\n";
$code .= "suggestions:[" . $resString . "],\n";
$code .= "data:[" . $idString . "]\n";
$code .= "}";
echo $code;
Dies gibt ein einfaches JSON-Dataset aus, das als Ergebnis gelesen und zurückgesendet wird. Das Problem ist, dass es wirklich langsam war. Das "LIMIT 5" half einer Tonne, es zu beschleunigen. Allerdings läuft es immer noch langsam nach dem ersten Ergebnissatz. Ich gebe vielleicht "summ" ein und es kommt mit einer schnellen Ergebnismenge zurück, aber alle Buchstaben/Wörter danach brauchen 4-6 Sekunden, um zu zeigen. Die Datenbank ist ungefähr 300K Datensätze. Beigefügt ist ein Bild von meiner Datenbankstruktur Seite:
database http://semesterkey.com/images/data.jpg
Im gerade zu versuchen, herauszufinden, wie die Dinge zu beschleunigen. Ich denke, es könnte meine Datenbankstruktur sein, könnte es sein, wie ich frage? Ich habe nur keine Ahnung. Vielen Dank im Voraus für Ihre Hilfe!
@Yogesh hat Recht, Sie sollten Felder indizieren, nach denen Sie suchen. –
Würden Sie einen gruppierten oder nicht gruppierten Index empfehlen? Neuling hier! – user791187