Ajax自动完成-如何使其更快? - php

我们目前正在通过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…