为什么不建议在SQL中使用“LIKE”?

时间:2012-07-13 22:06:47

标签: mysql sql

我最近被告知不建议在SQL中使用“LIKE”关键字。这是真的?如果是这样的话?如果是真的有替代品吗?

3 个答案:

答案 0 :(得分:3)

原因主要是表现。但是,在参数的另一端,LIKE是标准SQL,应该适用于所有数据库。因为LIKE必须解析模式字符串,所以它比在较长字符串中查找子字符串(使用charindex或instr或您的数据库最喜欢的函数)效率低一些。但是,处理器速度如此之快,以至于现在很少有所不同,除了最大的查询。

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

顺便说一句,我是一个使用SQL语言的旧计时器,而且往往是一个避免个人使用它的人。然而,这不是一个应该传承的习惯,因为没有什么基础可以避免它。

答案 1 :(得分:2)

特别是在MySQL中(因为它有一个MySQL标签,我猜你正在使用它),当在一个有索引的列上使用LIKE时,你应该小心不要在你匹配的字符串前放一个%如果你不必,因为它会杀死使用索引有效查找的可能性,否则使用LIKE没有问题。 e.g。

BAD:

col_with_index LIKE '%someText'

GOOD:

col_with_index LIKE 'someText%'

答案 2 :(得分:0)

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

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

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

所以,在这些情况下,只要想想是否需要使用喜欢的东西,然后毫不犹豫地使用它。