If you have 20 different binary attributes to store, you have to put them somewhere
. Assuming they're all required for every row, start with the 20 columns and test to see if it meets your performance requirements. If it doesn't come back with your findings and we can discuss alternatives.
If you're sure
the binary data will be "small" you could use RAW instead. This has an upper limit of 2,000 bytes (32,767 if you have enabled extended data types).
That said, this is unusual. Are you sure you need 20 columns
? Could you create a child table with a row/binary attribute? e.g. something like:
create table t ( id int primary key );
create table t_binary (
id references t,
primary key ( id, attr# )
This is likely more appropriate - particularly if the BLOB attributes are optional and will be mostly null for most rows. It really comes down to what you're storing and why.