一个文章数据表,要根据 作者 来进行统计,文章表的作者字段不是单一作者,可能有好几个作者用json字符串保存。作者约有300多人有单独一个表。 读取作者表里面的记录,然后循环的用每个作者的id去查询文章表里面的作者字段,来统计作者的发布数。
原先文章表里面大致100多条记录,统计完300多个作者大约也就需要10秒不到。今天客户要求把老的文章导入,老文章大致17000多条。再运行统计页面的时候,页面要执行80来秒。本人觉得太慢了,就决定用单独的一个表来存放历史文章。然后把文章表里面导入的记录删除掉,删除时表的最大id已经30000多了。删除完也就剩下100条记录,但是查询却依然还要50来秒,之前100度篇的时候也只要10来秒。有高手知道,这是什么原因吗? 怎么样解决
原先文章表里面大致100多条记录,统计完300多个作者大约也就需要10秒不到。今天客户要求把老的文章导入,老文章大致17000多条。再运行统计页面的时候,页面要执行80来秒。本人觉得太慢了,就决定用单独的一个表来存放历史文章。然后把文章表里面导入的记录删除掉,删除时表的最大id已经30000多了。删除完也就剩下100条记录,但是查询却依然还要50来秒,之前100度篇的时候也只要10来秒。有高手知道,这是什么原因吗? 怎么样解决
解决方案
20
这么点数据,还用10秒?也是够慢的。可能跟json格式有关。
1、整理下碎片试试,optimize table t;
2、看能否存在有效索引
另外,建议关系型数据库最好不使用json,多个作者的以多条记录的形式存在
1、整理下碎片试试,optimize table t;
2、看能否存在有效索引
另外,建议关系型数据库最好不使用json,多个作者的以多条记录的形式存在
20
另外,把执行计划打出来看看:
explain select 。
explain select 。