我应该使用LIKE来查询有400万行的表

时间:2010-08-19 12:14:48

标签: sql sql-server performance

我正在设计一个搜索表单,我想知道是否应该使用LIKE %search_string%来搜索最多可能有400万行的表来搜索

4 个答案:

答案 0 :(得分:5)

总的来说,我会说不。这是full-text indexing的一个很好的候选人。搜索字符串中的前导%将消除使用任何索引的可能性。

可能存在等待可接受和/或您不希望维护全文索引的额外管理开销的情况,在这种情况下您可能会选择LIKE

答案 1 :(得分:3)

不,当您的表格相对较小或者您不关心自己或其他人对您的数据库的查询的表现时,您应该只使用LIKE '%...%'

还有其他方法可以实现这种功能,可以更好地扩展全文索引,或者,如果不可用或不够灵活,可以使用插入/更新触发器提取非噪声字以便稍后查询。

我提到了最后一种可能性,因为您可能想要全文索引。换句话说,你真的关心像“是”,“或”和“但是”这些词(这些是我之前提到的噪音词)。

您可以将字段分隔为单词并将相关字段放在另一个表中,并在 表上使用快速查询来查找实际行。

答案 2 :(得分:2)

即使在索引列上,使用LIKE %search_string%的搜索也非常慢。最糟糕的搜索是进行全表扫描。

如果搜索LIKE search_string%足够,我只是提供这种可能性。

答案 3 :(得分:2)

这取决于 - 如果不知道搜索的响应性如何,它可能会很好或者完全没有。您只会真正知道您是否使用可能的数据模式和搜索条件来描述您的搜索。

正如RedFilter指出的那样,如果普通搜索效果不佳,您可能需要考虑Full Text Search