медленное автозаполнение с большим поиском в базе данных - PullRequest
1 голос
/ 31 марта 2012

Я потратил значительное количество времени, пытаясь отследить это.Я использовал коробочное автозаполнение на своем сайте (http://www.devbridge.com/projects/autocomplete/jquery/).. Когда вы вводите слово, оно отправляет его в виде переменной GET на страницу для обработки, где оно ищется в базе данных mySQL. Страница выглядит следующим образом:

$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;

Выводит базовый набор данных JSON, который в результате читается и снимается. Проблема заключается в том, что он ДЕЙСТВИТЕЛЬНО медленный.Тем не менее, все еще работает медленно после того, как показывает начальный набор результатов. Я могу набрать «гул», и он вернется с быстрым набором результатов, но любые буквы / слова после этого потребуются 4-6 секунд, чтобы показать.Приложено изображение моей страницы структуры базы данных:

база данных http://semesterkey.com/images/data.jpg

Я просто пытаюсь понять, как ускорить процесс. Я думаю, что это может быть моя структура базы данных, этоможет быть, как я спрашиваю? Я просто понятия не имею. Заранее спасибо за вашу помощь!

Ответы [ 4 ]

1 голос
/ 31 марта 2012

Единственное решение состоит в том, чтобы использовать индексирование по столбцу, который вы хотите отобразить при автозаполнении в вашей базе данных, надеюсь, это поможет вам

0 голосов
/ 19 декабря 2014

Синтаксическая помощь для тех, кто не понимает, какой ответ выше

ALTER TABLE Ваше_имя_таблицы ADD INDEX ( column_title );

0 голосов
/ 31 марта 2012

сделать указатель на автора и название может помочь вам улучшить производительность.

0 голосов
/ 31 марта 2012

Да, ответом на вашу проблему является указатель на группу столбцов (автор, название).Это увеличит объем пространства, используемого БД, и уменьшит производительность операций INSERT, UPDATE, DELETE в этой таблице, но увеличит производительность опроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...