一个表的的主键比如id,一定要Numnber类型吗
我用varchar2不可以吗,如果可以的话我在这上面加索引是否效率是否有影响呢。

解决方案 »

  1.   

    首先,任何类型的列都可以被定义为主键。
    作为主键的选择:
    单纯从速度上讲,NUMBER是最好的,因为最快,其次是定长类型,再次是变长类型。
    如果考虑上数据量和用途的话,大致上可以如下选择:
    1)数据量大且经常作为查询对象被查询,那么可以选一个无实际意义的NUMBER类型作为单纯的主键,可以提供较好的查询速度,而且数据变更的时候也不会影响主键。
    2)如果并不经常作为查询对象而是在大表查询时与大表进行连结,在WHERE子句中起数据过滤的作用,则可以采用具有一定实际意义的数据类型做主键较好(如:VARCHAR2型的列)
      

  2.   

    不一定非得用number
    可以用varchar2
      

  3.   

    主键与类型没关系
    只是一般用number类型