Take the 2-minute tour ×  From various posts, I have summarized
about using number type instead of char/varchar for PK:  If you
choose char/varchar type for PK and your values are short (just
some alpha numberic codes) then it doesn't matter what type will
you use. As long as the size (in bytes) of string value does not
exceed the size of NUMBER type then performance should be the
same. However, for larger tables with a wider variation among
the key, this can slower the performance, for example, using
e-mail address/user name from a user table, for example. If the
table consists of a few million users and some of those users
have long names or e-mail addresses then index will definitely
be larger than just some numbers, so both the insert and search
will be slower when compared to numbers. Any time you need to
join this table using that key it becomes much more expensive.
Also, some implementations might use hash of the actual value
for indexing purposes, but even so, and even if it's a
relatively short hash