在 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技术并不比其他任何可以达到相同结果集的方法都要糟糕。
无论如何,我将发布此问题,希望有人可以揭示出我所不知道的性能更高的语法。