优化有BLOB,TEXT类型字段的查询
由于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以内的话,是可以存储在单个页块里的。
» 转载保留版权:老陈 » 《优化有BLOB,TEXT类型字段的查询》» 如果喜欢可以: 点此订阅本站