绩效条款中的数字与Varchar2的比较

时间:2018-11-18 03:36:32

标签: mysql oracle

我有一个表,其中包含STATUS的{​​{1}}列和VARCHAR2(25)的{​​{1}}列以及更多列。

从表中过滤记录时,我在查询中使用STATUS列和STATE列。

STATE

由于VARCHAR2(2)SELECT * FROM TAB WHERE STATUS = 'Active' AND STATE = 'WA';列是STATUS数据类型,因此我想在表中引入新的两列STATEVARCHAR2,数据类型为{ {1}}。 STATUS_IDSTATUS_ID的值由NUMBER的值替换为STATUSSTATE的{​​{1}}值。这样我就可以使用NUMERIC子句中的STATUS_ID列而不是STATE_ID列。

NUMBER

我仅比较VARCHAR2WHERE以及SELECT * FROM TAB WHERE STATUS_ID = 1 AND STATE_ID = 2;NUMBER数据类型。查询中不存在隐式或显式的数据类型转换。

在Oracle数据库的NUMBER子句中使用VARCHAR2数据类型而不是VARCHAR2会提高性能吗?

我想知道NUMBER数据类型是否比WHERE子句中的VARCHAR2数据类型具有更高的性能。是真的吗

谢谢。

1 个答案:

答案 0 :(得分:0)

性能将是相同的,因为Oracle将数字存储为打包字符串(与某些其他数据库不同)。选择格式之前,您唯一需要考虑的事情就是要使用的操作与值,转换或查找值所需的计算能力。