我正在构建一个网络应用程序,该应用程序将在最终用户输入信息时为他们使用自动完成/建议。这将专门用于输入国家、省、市信息。
在每次击键时对数据库进行通配符搜索:
SELECT CityName
FROM City
WHERE CityName LIKE '%@CityName%'
将给定省的所有城市的列表返回给客户端并让客户端进行匹配:
SELECT CityName
FROM City
WHERE ProvinceID = @ProvinceID
这些将通过对 Web 服务的 ajax 调用作为 JSON 字符串返回给客户端。我的想法是,javascript 能够通过 JSON 处理包含 100 多个条目的列表,这比数据库能够进行通配符搜索的速度更快,但我希望社区能够提供意见。
最佳答案
过去,我使用过这两种技术。如果您谈论的是 100 个左右的条目,并且假设每个条目都非常小,那么在客户端执行自动完成过滤器可能会更快。这将为您提供更好的响应时间(尽管可能可以忽略不计)并减少服务器上的负载。
Google 实际上会在用户输入时进行实时搜索,从用户的角度来看,它的响应速度似乎相当快。这是一个必须在服务器端执行查询的示例,因为数据集太大而无法传输到客户端。
您可能要做的一件事是等到用户键入两次击键后再从服务器获取列表,从而初步缩小结果范围。当然,这会增加复杂性 - 如果用户更改了前两个击键中的任何一个,您将需要刷新列表。
关于sql-server - 在客户端或服务器上处理自动完成/建议更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12629566/