General Database Optimizations - correct data types - why to avoid NULL? Oracle recommends:

Choose the correct data types and size to:
– Avoid NULLs
– Improve performance
– Protect data
– Use data compression where appropriate




I don't understand why I need to avoid NULL. Please explain.
While I do use NULL columns, there is overhead.  The Oracle documentation you retrieved this short list should explain if you read further. 

There are case where NULL indicates issues with data types and/or just having the column.  


Consider PHONE_NUMBER NUMBER(15):  This will likely have a formatted phone number column, and may be null for numbers like 1-800-CALL-NUM.  
Other columns may be NULL because you are unable to gather the data require to fill them.  Consider dropping the columns if is unlikely you will be gather the data. 
NULL columns may belong to a sub-type.  It may be appropriate to have a related table containing type related data. This would have an optional 1 to 1 (1 to (0,1)) relationship.
NULL columns are problematic for indexes. 
NULL columns may be state related, such as DATE_SHIPPED on a order.  It would be appropriate for this to be NULL before the order is shipped.  However, it would be inappropriate for a has_shipped indicator column to be NULL.  


It is always possible to normalize NULL columns out of the database.  It may not always be appropriate to do so. 

I do try to put NULL columns last. I've posted on column order previously.