SQL 索引和多列数据库搜索

SQL Indexes and Multicolumn Database search

我必须执行搜索以查找用户名中的子字符串。 用户在 2 列中有 FirstName 和 LastName。做 WHERE FirstName LIKE '%searchText%' OR LastName LIKE '%searchText%'

就足够了

我想解决的问题是性能。假设目前我预计最多有 1000 个用户。我不想搜索需要很长时间。所以我想到了索引(那些列不会有太大变化,我期望这些列的值几乎永远不会改变)。我知道我将寻找我需要多列索引的两列。

这是正确的做法吗? 还是用SQL全文搜索比较好(请提供一些好的link)? 创建一个连接 FirstName 和 LastName 的视图并在那里搜索会更好吗? 或者最好只使用例如Azure 搜索(目前,这是唯一的,它可能是我需要搜索的最后一个实体)?

我正在使用 .NET 4.6 和 EntityFramework 托管在 Azure 网络应用程序上。

谢谢

由于前导通配符,将不使用索引。唯一使用索引的情况是通配符位于字符串的中间或末尾。如果您的 table 非常宽,如 David Browne 所说,在 LastName 和 FirstName 上添加一个索引也是一个很好的建议。

如果您确实需要使用两个通配符进行搜索(即部分匹配),那么我会看一下您 table 中的数据量。如果我们谈论的只是几千行,table 扫描在性能方面仍然非常出色。如果我们谈论的是 50.000 行或更多行,那么全文索引将是最好的。 这似乎是一个很好的教程:https://docs.microsoft.com/en-us/sql/relational-databases/search/get-started-with-full-text-search