mysql - 大型数据库搜索自动完成速度慢

标签 mysql sql autocomplete

我花了相当多的时间试图找到这个。我在我的网站上使用了盒装自动完成功能 ( 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 数据集,该数据集会被读取并作为结果返回。问题是它真的很慢。 “LIMIT 5”帮助它加快了一些速度。但是,在初始结果集显示后仍然运行缓慢。我可能会输入“hum”,它会返回一个快速结果集,但之后的任何字母/单词都需要 4-6 秒才能显示。该数据库大约有 300K 条记录。附上我的数据库结构页面图片:

database http://semesterkey.com/images/data.jpg

我只是想弄清楚如何加快速度。我认为这可能是我的数据库结构,可能是我查询的方式?我只是不知道。预先感谢您的帮助!

最佳答案

唯一的解决办法是在你想要在数据库自动完成中显示的列上使用索引,希望这对你有帮助

关于mysql - 大型数据库搜索自动完成速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9953333/

相关文章:

Mysql 在 INSERT 查询中截断了不正确的 DOUBLE 值

php - 检查我的数据库中是否已存在用户名和电子邮件

sql - 从 2 个表中选择 2 个不同的值

mysql - 连接两个表以查找不匹配的信息

python - Pycharm 不显示方法的自动完成或文档

javascript - JQuery UI 自动完成从输入中获取两个信息

eclipse - 用于 Eclipse 的 ScalaIDE : How can I autocomplete from libraries?

java - DeadLock 在批量 DELETE 预准备语句 MYSQL 中发现错误

php - MySQL - 跨两个表的最佳实践

mysql - 使用 Shell 脚本运行远程 MySQL 命令