【发布时间】:2012-10-16 01:01:19
【问题描述】:
我需要一些帮助,我正在根据条件获取数据
这里我使用 like 运算符,客户端可以使用任何单词进行搜索,因此我有以下逻辑,但这里的检索时间太长(需要 4 分钟)而无法获取太慢的数据。
我对表进行了所有索引,但仍然无法优化查询。
从作者中选择 * 其中(地址如'% Walmart%'或地址如'Walmart%'或地址如'%Walmart'或地址如'%Walmart.com%'或地址如'Walmart.com%'或地址如'%Walmart.com ' OR 地址如 '% Walmarts %' OR 地址如'Walmarts %' OR 地址如'% Walmarts' OR 地址如'% Walmarts.com %' OR 地址如'Walmarts.com %' OR 地址如'% Walmarts.com ')
-- 结果为 1 行
如果我遵循这个逻辑
从作者中选择 * 像'%Walmart%'这样的地址
-- 结果是 44 行 - 它正在获取所有行
但我只需要得到那一行
【问题讨论】:
-
你为什么允许这种类型的搜索,这就是为什么它需要这么长时间。看看你喜欢多少列。
-
您是否发现冗余子句提高了性能?搜索
'%' + @word + '%'应该几乎涵盖@word、'% ' + @word和'@word + ' %'。以此类推。 -
我只需要检查一列,但由于这种情况,检索数据需要很长时间......如果你知道任何更好的解决方案,请告诉我......提前致谢跨度>
-
@HABO '%' +
@word+ '%' 将涵盖所有场景,甚至包括@words、@wordcom和@wordscom,因为它会在字符串。 -
与 10 个重叠的类似子句和不可索引的查询相比,使用单个条件和全文索引可能会有显着改进。
标签: sql sql-server sql-server-2008 tsql sql-server-2005