$r['p'], "s" => $r['s']-6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:24:40 27 4
gpt4 key购买 nike

我们当前正在通过 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)考虑是否需要数据库查询(如果您从不或很少需要更改自动完成的数据,答案是否定的,如果数据是动态的,例如您的 friend 列表,则答案是否)

2)在您正在搜索的表/列上放置覆盖索引

3) 在浏览器中缓存结果以避免进行过多的调用

4) 永远不要执行 select * 查询!您会浪费大量时间检索可能不使用的数据!只需选择您需要的字段即可!

5) 当你对 id 进行查找时,不要像以前那样使用 LIKE:使用 = 会快得多

关于php - Ajax 自动完成 - 如何使其更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6661420/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com