一般在保存少量字符串的时候,我们会选择 CHAR 或者 VARCHAR;而在保存较大文本时, 通常会选择使用 TEXT 或者 BLOB
,二者之间的主要差别是 BLOB 能用来保存二进制数据,比 如照片;而 TEXT 只能保存字符数据,比如一篇文章或者日记。TEXT 和 BLOB 中有分别包括 TEXT、MEDIUMTEXT、LONGTEXT 和 BLOB、MEDIUMBLOB、LONGBLOB3 种不同的类型,它们 之间的主要区别是存储文本长度不同和存储字节不同,用户应该根据实际情况选择能够满足 需求的最小存储类型。
下面的例子描述了 OPTIMIZE TABLE 的碎片整理功能。
。合 成的散列索引对于那些 BLOB 或 TEXT 数据列特别有用。用散列标识符值查找的速度比搜索 BLOB 列本身的速度快很多。
简单来说,合成索引就是根据大文本字段的内容建立一个散列值,并把这个值存储在单独的 数据列中,接下来就可以通过检索散列值找到数据行了
定点数不同于浮点数,定点数实际上是以字符串形式存放的,所以定点数可以更加精确 的保存数据。如果实际插入的数值精度大于实际定义的精度,则 MySQL 会进行警告(默认 的 SQLMode 下),但是数据按照实际精度四舍五入后插入;如果 SQLMode 是在 TRADITIONAL (传统模式) 下,则系统会直接报错,导致数据无法插入。在MySQL中,decimal (或numberic) 用来表示定点数。
从上面的例子中可以看到,c1 列的值由 131072.32 变成了 131072.31,这是上面的数值 在使用单精度浮点数表示时,产生了误差。这是浮点数特有的问题。因此在精度要求比较高 的应用中(比如货币)要使用定点数而不是浮点数来保存数据。