Should I use long integer?


I'm used to working with systems where you worry about the speed of execution. If you have a field you know will only ever hold values 0-255, you call it a Byte. 0-~2bn is a Long Integer.

So along came Oracle 8, and I had to design a data model. All the documentation says that for any integer, you should use Number(38). According to the same documentation, this is allows for the storage of up to 38 digits, with decimal point anywhere. Now, I know that this will probably work, but it doesn't sound like a terribly optimal way of going about storing a 32-bit Long Integer.

Does anyone know anything about how Oracle handles Number fields internally? Is there anything to be gained by using, say Number(10) over Number(38), and ignoring the documentation?



Ans1:
Documentation is right.

Number(10) can't provide better performance than number(38). Rather it's a ristriction
on the column.

As for internal format, for example, number 1234 will be store in a format like 1.234x10^3. You can refer Oracle server concepts for detail info.



Ans2:
It's not quite as bad as it sounds. All numeric fields are variable length (including integer) so if you store 0 to 255 you will only use 3 bytes max. Use vszie function confirm. Still two more than you wish.
 
Hosted by www.Geocities.ws

1