首页 > 数据库 > 优化有BLOB,TEXT类型字段的查询

优化有BLOB,TEXT类型字段的查询

2016年4月29日 804 views 发表评论 阅读评论

由于MySQL的内存临时表不支持blob,text值,如果包含blob(text)列的查询需要用到临时表,就会使用基于磁盘的临时表,性能将急剧降低。所以编写查询语句,如果没有必要包含blob、text列,就不要也写入查询条件。

可以规避的办法有2种:

q  1.使用SUBSTRING( ) 函数。

q  2. 把临时表存放在基于内存的文件系统. 如linux下的tmpfs 。设置MySQL变量tmpdir ,可以设置多个临时表位置(用分号分割),MySQL将使用轮询方式。

优化办法有。

q  如果必须使用,可以考虑拆分表,把blob,text字段分离到单独的表。

q  如果有许多大字段,可以考虑合并这些字段到一个字段,存储一个大的200kb比存储20个10kb更高效。

q  考虑使用COMPRESS( ),或者在应用层进行压缩,再存储到blob字段中。

注意:如果BLOB列很大,可能需要增大innodb_log_file_size (MySQL错误日志内可能有提示事务日志小了)。

VARCHAR, BLOB和TEXT列,最大行长度稍微小于数据库页的一半。即,最大行长度大约8000字节,在8k以内的话,是可以存储在单个页块里的。

 » 如果喜欢可以: 点此订阅本站
分类: 数据库 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.