在SQL中,当查找特定字符串时,substr或类似方法哪个更快?

在SQL中,当查找特定字符串时,substr或类似方法哪个更快?,sql,case,Sql,Case,我得到了一个case语句,其中我尝试用新的值替换查询返回的值。我意识到有不同的方法来实现这一点,我想知道哪一种方法是最有效的方法,我想到的两种方法: 方法1 Case when myobject LIKE 'ABC%' then...else...end 方法2 case when substr(myobject,1,3) = 'ABC' then...else...end 这些方法中有一种比另一种快吗?我正在努力确保我的查询尽可能的高效。类似的表单是标准SQL。因此,一些数据库将在可能的情

我得到了一个case语句,其中我尝试用新的值替换查询返回的值。我意识到有不同的方法来实现这一点,我想知道哪一种方法是最有效的方法,我想到的两种方法:

方法1

Case when myobject LIKE 'ABC%' then...else...end
方法2

case when substr(myobject,1,3) = 'ABC' then...else...end

这些方法中有一种比另一种快吗?我正在努力确保我的查询尽可能的高效。

类似的
表单是标准SQL。因此,一些数据库将在可能的情况下对此进行优化,以使用索引

特别是,在查找初始序列时(如您的情况),SQL引擎可以选择在列上使用索引。我认为没有任何数据库对子字符串进行类似的优化


因此,出于两个原因,首选
like
形式。这是标准的SQL。而且,一些数据库可以优化它以利用索引。

类似的
表单是标准SQL。因此,一些数据库将在可能的情况下对此进行优化,以使用索引

特别是,在查找初始序列时(如您的情况),SQL引擎可以选择在列上使用索引。我认为没有任何数据库对子字符串进行类似的优化


因此,出于两个原因,首选
like
形式。这是标准的SQL。而且,一些数据库可以优化它以利用索引。

性能差异将是最小的,甚至可以忽略不计


像使用
一样使用
,因为可读性每次都比一个小的/可以忽略不计的性能增益要好。

性能差异将是最小到可以忽略不计的


像使用一样使用,因为可读性每次都比不上小的/可忽略的性能提升。

我99%确信在大多数典型情况下,第一个将是最有效的。您可以在management Studio中通过使用执行计划和同时执行两者进行比较。它将显示比较两者的成本。我认为它们将返回相同的结果,ABC之前没有%,因此字符串必须以ABC开头,如果我错了,请更正我。Substr函数将始终在字符串中返回一个值(和一行)(如果您有足够的字符),但LIKE将执行搜索,并且可能返回行,也可能不返回行。因此,返回的行数可能会有所不同。我敢肯定,在大多数典型情况下,第一行将是最有效的一行。您可以在management Studio中使用执行计划并同时执行这两个行来进行比较。它将显示比较两者的成本。我认为它们将返回相同的结果,ABC之前没有%,因此字符串必须以ABC开头,如果我错了,请更正我。Substr函数将始终在字符串中返回一个值(和一行)(如果您有足够的字符),但LIKE将执行搜索,并且可能返回行,也可能不返回行。因此,返回的行数可能不同。我认为他希望选择案例以输出更改的值,因此索引不重要,它是select语句,数据库基于Netezza,因此据我所知,没有索引。根据上面的评论,我将使用LIKE语句,谢谢。我认为他希望选择案例来输出更改的值,因此索引不重要,它是select语句,数据库基于Netezza,因此据我所知,没有索引。我将根据以上评论使用LIKE语句,谢谢。