我的公司数据库为其主要产品标签提供了20种不同的字符串格式。所有20个都存储在一个单独的查找表中
1是以'W'开头的字符串
2是以'TAIC'开头的字符串
3是以'D'开头的字符串
...
label属性旁边是'type'属性,它存储与标签包含的前缀相关的数字。
我的任务是更新我们的一个模块以获得更好的运行时间。我遇到的其中一个查询涉及包含“TAIC”作为前缀的所有标签。但是,不是比较类型号是否等于2,而是运行LIKE操作,检查以TAIC开头的每个标签。
现在,我的问题是 - 由于我的目标是更好的运行时间,从类似运算符切换到类型属性的常规相等操作是否明智?似乎对字符串运行正则表达式操作会耗费更多时间,但足以显着改变系统的运行时间?
答案 0 :(得分:2)
在Oracle中,这两项操作都是:
SELECT *
FROM mytable
WHERE pk LIKE 'TAIC%'
和
SELECT *
FROM mytable
WHERE type = 2
是可以攻击的,可以在相应的字段上使用索引。
然而,数字索引会更紧凑,因此需要更少的遍历时间,因此使用数字比较可以提高查询性能。