首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型数据库搜索时自动完成速度较慢

大型数据库搜索时自动完成速度较慢
EN

Stack Overflow用户
提问于 2012-03-31 13:40:31
回答 4查看 3.2K关注 0票数 1

我花了相当多的时间试图追踪到这一点。我在我的网站(http://www.devbridge.com/projects/autocomplete/jquery/)上使用了盒装的自动补全功能。当您键入单词时,它会将该单词作为GET变量发送到页面进行处理,然后在mySQL数据库中搜索该单词。该页面如下所示:

代码语言:javascript
复制
$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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-31 13:43:14

唯一的解决方案是使用索引的列,您想要显示在您的数据库中的自动补全,希望这将有助于您

票数 1
EN

Stack Overflow用户

发布于 2012-03-31 13:51:39

是的,您的问题的答案是在(作者,标题)列的组上建立索引。它将增加DB使用的空间量,并降低该表中INSERT、UPDATE、DELETE的性能,但它将提高查询性能。

票数 0
EN

Stack Overflow用户

发布于 2012-03-31 13:54:26

在作者和标题上建立索引可以帮助你提高性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9953333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档