我花了相当多的时间试图追踪到这一点。我在我的网站(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
我只是想弄清楚如何加快速度。我认为这可能是我的数据库结构,它可能是如何查询?我就是不知道。提前感谢您的帮助!
发布于 2012-03-31 13:43:14
唯一的解决方案是使用索引的列,您想要显示在您的数据库中的自动补全,希望这将有助于您
发布于 2012-03-31 13:51:39
是的,您的问题的答案是在(作者,标题)列的组上建立索引。它将增加DB使用的空间量,并降低该表中INSERT、UPDATE、DELETE的性能,但它将提高查询性能。
发布于 2012-03-31 13:54:26
在作者和标题上建立索引可以帮助你提高性能。
https://stackoverflow.com/questions/9953333
复制相似问题