如果我在多列上查询具有唯一索引的数据库(Oracle),如果将VARCHAR2中的某一列更改为NUMBER,性能是否会有所不同?
如果有,是重要?VARCHAR2与NUMBER之间的性能差异
(它的VARCHAR2,因为我需要“0”开头,但我可以在我的应用程序改变它在表示层)
如果我在多列上查询具有唯一索引的数据库(Oracle),如果将VARCHAR2中的某一列更改为NUMBER,性能是否会有所不同?
如果有,是重要?VARCHAR2与NUMBER之间的性能差异
(它的VARCHAR2,因为我需要“0”开头,但我可以在我的应用程序改变它在表示层)
比我知识渊博的人告诉我,在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个字符,那么你可能会比数字更好。
谢谢,虽然晚会到了派对,但与汤姆的链接值得... ... :) – gdoron
是的,它应该是更快的使用数量。是否给你增加一个显着取决于你的数据,索引和查询。如果你遇到性能问题,这不太可能是魔术解决方案。
您需要定义'显着'。 NUMBERS会更快。 – Randy
VARCHAR2和NUMBER之间的差异并不那么显着(它们的存储方式相似)。多列唯一索引中的列的ORDER可能很重要。 – ibre5041