使用 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);
但是,这是一个缓慢的搜索过程...
还有其他方法吗??我需要进行搜索,并且搜索必须快速...
根据您的评论,您想在 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');