我有一个表,其中包含STATUS
的{{1}}列和VARCHAR2(25)
的{{1}}列以及更多列。
从表中过滤记录时,我在查询中使用STATUS列和STATE列。
STATE
由于VARCHAR2(2)
和SELECT * FROM TAB WHERE STATUS = 'Active' AND STATE = 'WA';
列是STATUS
数据类型,因此我想在表中引入新的两列STATE
和VARCHAR2
,数据类型为{ {1}}。 STATUS_ID
和STATUS_ID
的值由NUMBER
的值替换为STATUS
和STATE
的{{1}}值。这样我就可以使用NUMERIC
子句中的STATUS_ID
列而不是STATE_ID
列。
NUMBER
我仅比较VARCHAR2
与WHERE
以及SELECT * FROM TAB WHERE STATUS_ID = 1 AND STATE_ID = 2;
与NUMBER
数据类型。查询中不存在隐式或显式的数据类型转换。
在Oracle数据库的NUMBER
子句中使用VARCHAR2
数据类型而不是VARCHAR2
会提高性能吗?
我想知道NUMBER
数据类型是否比WHERE子句中的VARCHAR2
数据类型具有更高的性能。是真的吗
谢谢。
答案 0 :(得分:0)
性能将是相同的,因为Oracle将数字存储为打包字符串(与某些其他数据库不同)。选择格式之前,您唯一需要考虑的事情就是要使用的操作与值,转换或查找值所需的计算能力。