Re: which would be more suitable for ID codes? Integer or Packed?
Knowing that they are not intended for arithmetic operations, I would
opt solely for minimizing the storage they require, given the
definitions of these /numbers/ for their number-of-digits. But I would
choose Packed [SQL DECIMAL data type], for each component of the
three-part ID.
If I was worried that the ID-codes might change to include alpha,
then I might just go purely character with the inherently larger disk
storage requirements for the physical data and access paths, and greater
CPU requirements for character translation [CCSIDs] and Sort Sequence.
If I was not concerned about a change to alpha, then I would certainly
not give any consideration for an expansion of the ID-code; i.e. ensure
that the values could fit in the same size numeric type if expanded,
such as choosing SMALLINT for myfld2. But I would also most definitely
*not* choose SMALLINT for the N(5) nor INTEGER for the N(10) [like was
shown in the earlier reply with a link below; INTEGER being 4-byte
binary for the DB2 for i SQL, presumably the same in the other SQL
rather than being equivalent to a BIGINT], because then there is already
an inability to hold the largest possible value of an N(10) according to
the written requirements. To be sure, I would not depend on the
knowledge that, of the existing data, the current values are all "less
than 1000".
Reference to the earlier message with the other SQL definitions
[CREATE TABLE requests] and the apparent requirements [for number of
digits surely, though possibly also numeric implied]:
http://archive.midrange.com/midrange-l/201401/msg00514.html
I would probably choose to use the following:
create table mytbl
( myfld1 decimal( 5) not null /* 3-bytes */
, myfld2 decimal( 2) not null /* 2-bytes */
, myfld3 decimal(10) not null /* 6-bytes */
, myDate /* I would demand some historical and use information
before I would commit to a decision on this one */
...
, primary key (myfld1, myfld2, myfld3)
)
Regarding my choices: The myfld2 could just as well be NUMERIC
instead. But I have to admit first a preference for Packed Binary Coded
Decimal, and second a preference for physical storage viewing in hex,
because the first is packed, that the others would be packed. And
because I am much quicker at using decimal digits, knowing that the
first component of a key is 00333 I can see that conspicuously with
either BCD data type [using *CHAR display for zone and *HEX for pack],
whereas for any /integer/ data type I will be seen taking out my hex
calculator to determine what I am looking at ;-) Similarly... While
searching on '00333' is easy for zoned or char, I consider searching on
x'00333F' to be almost as easy to type [and there is a bonus, that such
a search string also will avoid unwanted matches across alphanumeric
data]. And I will not ask my calculator presently, to tell me what to
compose as my x'########' search, if the value had been INT :-) to
emphasize my earlier point.
Regards, Chuck
On 23-Jan-2014 08:57 -0800, Charles Wilt wrote:
Any thoughts on which would be more suitable for ID codes? Integer
or packed?
On Wed, Jan 22, 2014 at 3:25 PM, Charles Wilt wrote:
In the example given, Myfld1-3 are ID codes making up a composite
primary key.
<<SNIP>>
On Wed, Jan 22, 2014 at 2:46 PM, CRPence wrote:
On 22-Jan-2014 10:51 -0800, Charles Wilt wrote:
Philosophical question for you all...
I'm creating a new table to hold data received from an external
source.
The specs given include
Name, Type/Length, Picture
MyFld, N/5 , 9(5)
So MyFld is a 5 digit number...
I could defined this as Packed/Zoned 5,0
Or I could use integer (or even small integer since the
current number of values is less than 1000)
Since I know DB2 and RPG for that matter perform best with
integer, I'm leaning that direction. But I can't help but think
that Packed (5,0) is more correct.
Thoughts?
I would decide according to the storage requirements for the data
[in both dataspace and an access path], and according to how the
data will be used in programs and queries which is likely
dependent on what the data represents. <<SNIP>>
As an Amazon Associate we earn from qualifying purchases.