做不区分大小写的表达式的最有效方法是什么?

时间:2018-10-21 06:24:58

标签: sql pervasive pervasive-sql

Pervasive v13 中,是否有一种“性能更高”的方式来执行不区分大小写 like expression,而不是下面所示的方式?

select * from table_name
where upper(field_name) like '%TEST%'

上面的UPPER函数具有我要避免的性能成本。

我不同意那些说UPPER的性能开销很小的人;与没有UPPER的完全相同的查询相比,它的执行时间增加了一倍。

背景

我对这种类似于通配符的表达式的执行时间感到非常满意,直到我意识到由于大小写不匹配导致结果集缺少记录。

然后,我实现了UPPER技术(如上所述)。这实现了包括那些丢失的记录,但是它使查询的执行时间增加了一倍。

对于我来说,这种不区分大小写的UPPER技术,即使在概念层面上,对我来说也显得有些奇怪。我希望为大型数据库表中的每个记录更改字段的大小写,我希望SQL标准提供某种类型的语法标志,以修改like-expression区分大小写的行为。< / p>

从那里,在后台,数据库引擎可以生成一个已编译的正则表达式(或某些其他优化的不区分大小写的求值器),其性能可能大大优于UPPER技术。看来这可能存在。

但是,我必须承认,在某种程度上还必须进行转换才能进行字母比较。也许,这种UPPER技术并不比其他任何可以达到相同结果集的方法都要糟糕。

无论如何,我将发布此问题,希望有人可以揭示出我所不知道的性能更高的语法。

0 个答案:

没有答案