我们目前正在通过mySQL运行ajax自动完成脚本,如下所示:
<?php
$q = strtolower($_GET['term']);
if (!$q) return;
$q = noescape($q);
if (is_numeric($q)){
$q = mysql_query("SELECT * FROM `blah` WHERE `id` LIKE '" . $q . "%' DESC LIMIT 10");
}else{
$q = mysql_query("SELECT * FROM `blah` WHERE `name` LIKE '" . $q . "%' DESC LIMIT 10");
}
$json = array();
while ($r = mysql_fetch_array($q)){
$json[] = array(
"v" => $r['v'],
"p" => $r['p'],
"s" => $r['s'],
"l" => $r['v'] . ', ' . $r['s'] . ' (' . $r['p'] . ')'
);
}
echo json_encode($json);
?>
我们希望加快搜索速度,因此不需要调用数据库并降低搜索速度。
我正在查看其他人的自动完成功能,并且在执行搜索时-他们的ajax正在调用“ search.ds?query = blah”文件-这是什么?我们怎么能这么快地模仿某些东西?
下载.ds文件时,它会提示,我们将其打开,并且其中包含的所有内容都是与我们的搜索匹配的数组,因此它们并未在其中存储所有数据。
谢谢
参考方案
如果您想更快地完成自动填充,可以执行以下操作:
1)考虑是否需要数据库查询(如果您从不需要或很少需要更改自动完成数据,答案为“否”,如果数据像朋友列表一样动态,则为“是”)
2)在要搜索的表/列上放置覆盖索引
3)将结果缓存在浏览器中,以避免调用过多
4)永远不要执行select *查询!!!您浪费大量时间来检索可能不使用的数据!只需选择所需的字段即可!
5)在对ID进行查询时,请不要像使用LIKE那样使用:use =它快得多
PHP:将数组值加在一起 - php我相信这比标题听起来要难一些,但我可能完全错了。我有一个像这样的数组:[["londrina",15],["cascavel",34],["londrina",23],['tiradentes',34],['tiradentes',21]] 我希望能够采用通用…
PHP JQuery复选框 - php我有以下片段。 var myData = { video: $("input[name='video[]']:checked").serialize(), sinopse: $("#sinopse").val(), dia: $("#dia").val(), quem: $(…
PHP strtotime困境 - php有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…