这段代码工作正常,但问题是它很慢,我认为这是因为每次键入一个字母时它都连接到数据库。有没有办法让它更快?我必须假设db表并不总是相同,所以我不能只是将结果添加到var并完成它。提前谢谢。
另外如果你认为这种api不好,我可以接受替代方案。
HMTL:
<label for="hint">Meds: </label>
<input id="hint">
JQuery的:
$(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);
}
答案 0 :(得分:1)
您可以在3个域中进行调查:
您可以实现简单的缓存系统。
例如,缓存26个不同文件或其他文件中每个起始字母的所有结果。为您的案例找到最佳的重新分配。你有很多choices方法
你的桌子有索引吗?如果没有,你想深入研究that!
大多数数据库都为您的用例提供了一些示例代码。
当您必须处理大数据集时,您需要考虑使用搜索引擎系统(如ElasticSearch)。 它们通常具有用于自动完成的内置模块,并且性能非常高。