gpt4 book ai didi

c# - 使用 .Contains 在 asp.net MVc web 应用程序中进行搜索和自动完成搜索的可扩展性如何

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:19 25 4
gpt4 key购买 nike

我发现很多教程和书籍在 MVC web 应用程序中实现自动完成搜索,如下所示:-

public ActionResult ArtistSearch(string q)
{
var artists = GetArtists(q);
return PartialView(artists);
}
private List<Artist> GetArtists(string searchString)
{
return storeDB.Artists
.Where(a => a.Name.Contains(searchString))
.ToList();
}

但这提出了一个问题,即这种方法在可能有数千条记录的实际应用程序中的可扩展性有多大???,那么使用 Contains() 是否可以很好地扩展?BR

最佳答案

如果我没记错的话,string.Contains() 被翻译成一个 LIKE 查询,在查询字符串的每一边都有一个通配符。这使得使用索引变得非常困难/不可能,因此您可以期望在数据集上的性能为 O(n),因为 SQL Server 执行全表扫描(请参阅 Does SQL Server optimize LIKE ('%%') query?)。

要优化您的查询,您可能需要查看全文索引功能,更多信息请参见:SQL Server: how to optimize "like" queries? ).

如果你可以使用 .StartsWith 而不是 .Contains 你将有一个末尾带有通配符的 LIKE 查询,你可以在查询列上使用索引来快速查找(确保检查查询执行计划!)。

我想如果您尝试专注于自动完成功能的用户体验,您将获得更好的感知性能:在短暂的锁定期后(当用户停止输入时)开始自动完成搜索,并确保它不会't 阻塞(发生在后台)。

关于c# - 使用 .Contains 在 asp.net MVc web 应用程序中进行搜索和自动完成搜索的可扩展性如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659267/

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