This documentation is for an older version. If you're using the most current version, select the documentation for that version with the version switch in the upper right corner of the online documentation, or by downloading a newer PDF or EPUB file.

For optimum storage, you should try to use the most precise type
in all cases. For example, if an integer column is used for values
in the range from `1`

to
`99999`

, `MEDIUMINT UNSIGNED`

is
the best type. Of the types that represent all the required
values, this type uses the least amount of storage.

Tables created in MySQL 5.0.3 and above use a new storage format
for `DECIMAL`

columns. All basic
calculations (`+`

, `-`

,
`*`

, and `/`

) with
`DECIMAL`

columns are done with
precision of 65 decimal (base 10) digits. See
Section 11.1.1, “Numeric Type Overview”.

Prior to MySQL 5.0.3, calculations on
`DECIMAL`

values are performed using
double-precision operations. If accuracy is not too important or
if speed is the highest priority, the
`DOUBLE`

type may be good enough. For
high precision, you can always convert to a fixed-point type
stored in a `BIGINT`

. This enables
you to do all calculations with 64-bit integers and then convert
results back to floating-point values as necessary.

`PROCEDURE ANALYSE`

can be used to obtain
suggestions for optimal column data types. For more information,
see Section 8.4.2.4, “Using PROCEDURE ANALYSE”.