VARCHAR2到NUMBER之间的性能差异

时间:2011-11-26 19:51:50

标签: sql database performance oracle

如果我在多列上使用唯一索引查询我的数据库(Oracle),如果我将其中一列从VARCHAR2更改为NUMBER,是否会有任何性能差异?
如果有,是重要

(它是varchar2,因为我在开头需要'0',但我可以在我的应用程序的表示层中更改它)

2 个答案:

答案 0 :(得分:4)

是的,使用NUMBER应该更快。它是否为您提供重要增加将取决于您的数据,索引和查询。如果您遇到性能问题,这不太可能是一个神奇的修复。

答案 1 :(得分:3)

比我知识渊博的人告诉我,在Oracle中,number和varchar2之间的性能差异完全取决于你的数据,因为在内部他们有非常相似的表示。 请参阅以下内容:

https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:2669498700346402356

还要看一下"内部数字格式"部分:

http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT012

例如,如果您的varchar数据实际上是单个字符(例如' Y',' N')那么您可能会更好地使用varchars而不是数字。如果你的代码少于100个,但是你的字符串长度只有8个字符,那么你的数字可能比varchars更好。