webp 吹了那么多年,为什么webp格式兼容性

MYSQL中使用的TEXT字段的怪异现象
最近由于工作需要,要求对某个据称非常缓慢的一个查询进行优化,大概有4个20w左右的数据的表另外加几个字典表进行关联,居然查一次分页需要400秒,实在是慢的有些夸张。
我们知道,要优化SQL首先一般的方法都是先找到sql执行中的瓶颈,然后再对症下药;而“药”一般来说无非就是索引和查询方式。由于以前主要使用oracle数据库,mysql基本没怎么用过。首先上网上找了个mysql的explain命令的详细介绍,看看了慢SQL的执行计划,发现其默认的执行计划中使用的主表不是很理想并且sql里面又有排序,导致在执行中会使用临时表。使用MYSQL特定的STRAIGHT_JOIN强行指定了主表之后,居然执行计划里不再显示使用临时表了,执行起来快多了,分页一次只需要60秒左右了。
虽然60秒比原来的400秒快多了,但是对20w数据来说,这个确实还是有点夸张。仔细的分析了一下,发现sql的执行计划和我预想的已经差不多了,但是就是查询起来慢。也不知道是不是上天使然,我突然想到会不会是某个表有问题导致了整个查询缓慢呢?于是乎挨个表去掉进行测试,还真就让我找到了一个数据表,去掉之后,整个分页查询大概10秒左右就能搞定。初步确定是这个表的问题之后,特定仔细的观察了这个表,发现他居然有8个medium
Text字典 1个medium
blob字段,但是实际只使用了其中的三个TEXT字段,而且其中有两个居然是放在表的最前面的两个字段。
于是我初步怀疑是不是TEXT字段和Blob字段太多,导致MYSQL行分段太多从而导致查询缓慢,一边到网上差资料,一边试着去掉一些TEXT字段做测试,网上基本上没有关于这个的说法,到mysql的网站上问,居然大家就之说只能拆分表了事。经过我测试发现,当剩下行的最前两个TEXT字段就可以对这个表进行很快的访问了,但是这样也不是办法啊。
于是又找啊找,想啊想,结果还是没找到好的解决办法。这时有个同事突然说,会不会是在mysql里TEXT字段不能放在前面呢?这个电子让大家又燃起了希望了,如果真是这样,只改表结构而不用该程序了,是最省事了。
于是赶紧吧那两个字段移到行的最后,结果居然对表的访问真就很快了,整个原始的分页查询大概在16秒左右就完成了。看来问题主要就是出在这里了。总算找到了解决的办法了。
呵呵,后来仔细的分析了,原来那两个放在行的最前面的TEXT字典一直存储的数据比较少,平均来说那两列加起来不存了不到400字节的数据,而最近系统改了之后,里面存的超过1000字节了,从而就导致了这个问题的发生。至于mysql为什么会这样,我就不知道具体原因了。去mysql网站反应情况,人家说我肯定做了别的手脚,也懒得解释了。希望有此行高手指出其中的原委。
顺便提一下,我们用的是mysql5.0.21,innodb存储引擎,OS是Red Hat linux.
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。mysql导出csv数据的时候text类型字段的问题_问答_ThinkSAAS
mysql导出csv数据的时候text类型字段的问题
mysql导出csv数据的时候text类型字段的问题
mysql导出csv格式数据的时候,其中有个表里面有text类型的字段,那里面的值有换行,导致csv文件里面不是一条记录一行,而是一条记录被分割成很多行了。
有什么办法可以一条记录一行呢?
添加你想要问的问题
PHP开发框架
开发工具/编程工具
服务器环境[sqlserver]在text类型字段中查找字符串出现次数
-- [sqlserver]在text类型字段中计算某一字符串出现的次数 declare @ table nvarchar ( 40 ) ; -- 查询表名 declare @ textfield nvarchar ( 40 ) ; -- 查询列名(text类型) declare @ findstr nvarchar ( 400 ) ; -- 查找的字符串(非空) declare @ step int
-- [sqlserver]在text类型字段中计算某一字符串出现的次数
declare @table nvarchar(40); -- 查询表名declare @textfield nvarchar(40); -- 查询列名(text类型)declare @findstr nvarchar(400); -- 查找的字符串(非空)declare @step int; -- 每次从text字段截取的字符串长度declare @findcount int; -- 出现次数declare @sql nvarchar(400);declare @str nvarchar(4000);declare @findpos int;declare @pos int;declare @innerpos int;set @table = 'content';set @textfield = 'aboutus';set @findstr = '&strong&';set @step = 1000;set @pos = 1;set @findpos = 0;set @findcount = 0;while(@pos = 1 or len(@str) = @step)begin&&&&set @sql = N'select @str = substring(cast('+@textfield+' as ntext), '+cast(@pos as nvarchar)+', '+cast(@step as nvarchar)+') from '+@table;&&&&--select @&&&&exec sp_executesql @sql, N'@str nvarchar(4000) output', @str output;&&&&--select @&&&&set @innerpos = 1;&&&&while(@innerpos = 1 or @findpos & 0)&&&&begin&&&&&&&&select @findpos = charindex(@findstr, @str, @innerpos);&&&&&&&&if @findpos & 0&&&&&&&&&&&&set @findcount = @findcount + 1;&&&&&&&&set @innerpos = @findpos + len(@findstr);&&&&end&&&&set @pos = @pos + len(@str) - (len(@findstr) - 1);endselect @findcount;
你最喜欢的

我要回帖

更多关于 webp格式兼容性 的文章

 

随机推荐