JQuery UI自动完成很慢

时间:2017-08-02 08:34:07

标签: php jquery autocomplete

这段代码工作正常,但问题是它很慢,我认为这是因为每次键入一个字母时它都连接到数据库。有没有办法让它更快?我必须假设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);
}

1 个答案:

答案 0 :(得分:1)

您可以在3个域中进行调查:

缓存

您可以实现简单的缓存系统。

例如,缓存26个不同文件或其他文件中每个起始字母的所有结果。为您的案例找到最佳的重新分配。你有很多choices方法

数据库优化

你的桌子有索引吗?如果没有,你想深入研究that

大多数数据库都为您的用例提供了一些示例代码。

搜索引擎

当您必须处理大数据集时,您需要考虑使用搜索引擎系统(如ElasticSearch)。 它们通常具有用于自动完成的内置模块,并且性能非常高。