使用LIKE运算符比较数字与比较字符串的Oracle运行时

时间:2011-03-28 15:12:28

标签: oracle

我的公司数据库为其主要产品标签提供了20种不同的字符串格式。所有20个都存储在一个单独的查找表中

1是以'W'开头的字符串

2是以'TAIC'开头的字符串

3是以'D'开头的字符串

...

label属性旁边是'type'属性,它存储与标签包含的前缀相关的数字。

我的任务是更新我们的一个模块以获得更好的运行时间。我遇到的其中一个查询涉及包含“TAIC”作为前缀的所有标签。但是,不是比较类型号是否等于2,而是运行LIKE操作,检查以TAIC开头的每个标签。

现在,我的问题是 - 由于我的目标是更好的运行时间,从类似运算符切换到类型属性的常规相等操作是否明智?似乎对字符串运行正则表达式操作会耗费更多时间,但足以显着改变系统的运行时间?

1 个答案:

答案 0 :(得分:2)

在Oracle中,这两项操作都是:

SELECT  *
FROM    mytable
WHERE   pk LIKE 'TAIC%'

SELECT  *
FROM    mytable
WHERE   type = 2

是可以攻击的,可以在相应的字段上使用索引。

然而,数字索引会更紧凑,因此需要更少的遍历时间,因此使用数字比较可以提高查询性能。