我花了相当多的时间试图追踪这一个。我在我的网站上使用了盒装自动填充功能(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”帮助加速了一些。但是,在初始结果集显示后仍然运行缓慢。我可以输入“哼声”,它会以快速的结果集返回,但之后的任何字母/单词需要4-6秒才能显示。数据库大致是300K记录。附件是我的数据库结构页面的图片:
database http://semesterkey.com/images/data.jpg
我只想弄清楚如何加快速度。我想它可能是我的数据库结构,它可能是我如何查询?我只是不知道。在此先感谢您的帮助!
答案 0 :(得分:1)
只有解决方案是使用您希望在数据库中自动完成显示的列上的索引,希望这会对您有所帮助
答案 1 :(得分:0)
是的,您的问题的答案是(作者,标题)列组的索引。它会增加数据库使用的空间量,并会降低该表中INSERT,UPDATE,DELETE的性能,但会增加询问性能。
答案 2 :(得分:0)
为作者和标题制作索引可以帮助您提高效果。
答案 3 :(得分:0)
语法帮助那些不了解上述答案的人
ALTER TABLE
Your_table_name ADD INDEX (
column_title )
;