0

最近有人告诉我,不建议在 SQL 中使用“LIKE”关键字。这是真的?如果是,为什么?如果是真的,还有其他选择吗?

4

3 回答 3

4

原因主要是性能。然而,另一方面,LIKE 是标准 SQL,应该适用于所有数据库。因为 LIKE 必须解析模式字符串,所以它比在较长的字符串中查找子字符串(使用 charindex 或 instr 或您的数据库最喜欢的函数)效率要低一些。然而,处理器是如此之快,以至于现在这几乎没有什么不同,除了可能是最大的查询。

LIKE 的一个注意事项是在 join 语句中(替代方案也是如此)。通常,数据库引擎不会在连接中为 LIKE 使用索引。因此,如果您可以用一种对索引更友好的方式来表达 join 子句,那么您可能会看到性能的大幅提升。

顺便说一句,我是一个使用 SQL 语言的老手,并且倾向于避免亲自使用它。然而,这不是一个应该传承的习惯,因为已经没有什么基础可以避免了。

于 2012-07-13T22:17:19.367 回答
2

特别是在 MySQL 中(因为它有一个 MySQL 标记,我猜这就是你正在使用的),当在具有索引的列上使用 LIKE 时,你应该小心不要在你匹配的字符串前面放一个 % 如果你不'不必,因为它会扼杀使用Index进行高效查找的可能性,否则使用LIKE是没有问题的。例如

坏的:

col_with_index LIKE '%someText'

好的:

col_with_index LIKE 'someText%'
于 2012-07-13T22:24:26.423 回答
0

没有正当理由不使用like!!!

唯一的例外是您可以使用 EQUAL(=) 运算符来获得相同的结果(my_column LIKE 'XYZ')。

如果您需要使用 LIKE 任何其他替代方法来实现相同的结果,则应该会导致相同(甚至更多)的性能问题!

因此,在这些情况下,请考虑是否需要使用 like,然后毫不犹豫地使用它。

于 2012-07-14T18:21:35.710 回答