这段代码工作正常,但问题是它很慢,我认为这是因为每次我输入一个字母时它都会连接到数据库。有没有办法让它更快?我必须假设 db 表不会总是相同的,所以我不能只是将结果添加到 var 并完成它。先感谢您。
另外,如果您认为这个 api 不好,我可以接受替代方案。
HMTL:
<label for="hint">Meds: </label>
<input id="hint">
查询:
$(function () {
$("#hint").autocomplete({
source: 'getMedicineNames.php'
});
});
PHP:
require 'connect.inc.php';
$mysql = mysqli_connect("$db_host", "$db_username", "$db_pass", "$db_name");
$name = isset($_GET['term']) ? $_GET['term'] : "";
if ($name!="") {
$sql = "SELECT MedicineName FROM medicinetypes WHERE MedicineName LIKE '%$name%'";
$res = mysqli_query($mysql, $sql);
$res = mysqli_fetch_all($res, MYSQLI_ASSOC);
foreach ($res as $row) {
$data[] = $row['MedicineName'];
}
echo json_encode($data);
}
您可以在 3 个域中进行调查:
您可以实现简单的缓存系统。
例如,将每个起始字母的所有结果缓存在 26 个不同的文件或其他文件中。找到最适合您的情况的重新分区。这种方法你有很多选择
你的表有索引吗?如果你不想要深入那!
大多数数据库都为您的用例提供了一些示例代码。
当您必须处理大数据集时,您需要考虑使用搜索引擎系统(如ElasticSearch)。它们通常具有用于自动完成的内置模块并且非常高效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句