一般在保存少量字符串的时候, 我们会选择 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, 这是上面的数值 在使用单精度浮点数表示时, 产生了误差. 这是浮点数特有的问题. 因此在精度要求比较高 的应用中 (比如货币) 要使用定点数而不是浮点数来保存数据.
来源: http://www.bubuko.com/infodetail-3395122.html