使用 LIKE 运算符搜索 SQL 表列数据

本文关键字:数据 SQL 搜索 LIKE 运算符 使用 | 更新日期: 2023-09-27 18:31:40

SQL 表有 20835 行。需要在 C# 代码的 foreach 循环中搜索此表(仅返回一列)。这个 Foreach 循环执行了大约 35,000 次。

因此,我在表中创建了一个索引(由两列组成),用于快速搜索返回索引列本身。在 C# 代码中的SqlDataReader的帮助下使用此索引...

但是,它太慢了..完成此操作大约需要很长时间。

所以,做了一本字典。在这里,我们做一个TryGetValue()来搜索键值...

所以这就像搜索字典一样KEY='value'.

[ TryGetValue() 是一个快速搜索...]

但是,如果我们需要在KEY开头/包含搜索的地方做呢???

有什么办法吗??

一种方法是:

var values = dictionary.Where(pv => 
             pv.Key.StartsWith("A").Select(pv => pv.Value);

但是,这是一个缓慢的搜索过程...

还有其他方法吗??我需要进行搜索,并且搜索必须快速...

使用 LIKE 运算符搜索 SQL 表列数据

根据您的评论,您想在 PIngredientName 上执行"StartsWith"搜索。

为此,您需要此列上的索引和类似

SELECT SourceIngredientName WHERE PIngredientName LIKE @SearchString + '%';

~21.000 行并不多,对索引列的LIKE 'Pattern%'查询性能非常好。这应该是闪电般的快...

我会将查询打包到可内联的 TVF 中,例如:

CREATE FUNCTION dbo.SearchIngredient(@StartWith VARCHAR(100))
RETURNS TABLE
AS
RETURN SELECT SourceIngredientName, OtherColumns WHERE PIngredientName LIKE @StartWith + '%';
GO

而不是像这样称呼它

SELECT * FROM dbo.SearchIngredient('test');