Mysql入门系列:MySQL的列类型(2)
2006-12-31 10:47:43 来源:WEB开发网MySQL还有一个TEXT 类型系列( T I N Y T E X T、T E X T、M E D I U M T E X T、L O N G T E X T)。除了用于比较和排序外,它们在各个方面都与相应的BLOB 类型等同,BLOB 值是区分大小写的,而TEXT 值不区分大小写。BLOB 和TEXT 列对于存储可能有很大增长的值或各行大小有很大变化的值很有用,例如,字处理文档、图像和声音、混合数据以及新闻文章等等。BLOB 或TEXT 列在MySQL3.23 以上版本中可以进行索引,虽然在索引时必须指定一个用于索引的约束尺寸,以免建立出很大的索引项从而抵消索引所带来的好处。除此之外,一般不通过查找BLOB 或TEXT 列来进行搜索,因为这样的列常常包含二进制数据(如图像)。常见的做法是用表中另外的列来记录有关BLOB 或TEXT 值的某种标识信息,并用这些信息来确定想要哪些行。使用BLOB 和TEXT 列需要特别注意以下几点:
■ 由于BLOB 和TEXT 值的大小变化很大,如果进行的删除和更新很多,则存储它们的
表出现高碎片率会很高。应该定期地运行OPTIMIZE TABLE 减少碎片率以保持良好的
性能。要了解更详细的信息请参阅第4章。
■ 如果使用非常大的值,可能会需要调整服务器增加max_allowed_packet 参数的值。详细的信息请参阅第11章“常规的MySQL管理”。如果需要增加希望使用非常大的值的客户机的块尺寸,可见附录E“MySQL程序参考”,该附录介绍了怎样对mysql和mysqldump 客户机进行这种块尺寸的增加。
3. ENUM 和SET 列类型
ENUM 和SET 是一种特殊的串类型,其列值必须从一个固定的串集中选择。它们之间的主要差别是ENUM 列值必须确实是值集中的一个成员,而SET 列值可以包括集合中任意或所有的成员。换句话说, ENUM 用于互相排斥的值,而S E T列可以从一个值的列表中选择多个值。
更多精彩
赞助商链接