1、数据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是逐渐,vtype是tinyint,vtype是索引。这是一个基本的新闻系统的简单模型。现在往里面填充数据,填充10万篇新闻。
2、最后collect 为 10万条记录,数据库表占用硬盘1.6G。OK ,看下面这条sql语句:select id,title from collect limit 1000,10很快;基本上0.01秒就OK,再看下面的select id,title from collect limit 90000,10从9万条开始分页。
3、8-9秒完成。
4、看下面一条语句:select id from collect order by id limit 90000,10很快,0.04秒就OK。因为用了id主键做索引当然快。
首先分析为什么慢:1. 6个子查询,每个子查询都需要建立中间表;2,每个子查询都在做 group by, 重复;3 CASE WHEN 用不了索引,需要扫描所有列; 优化:CASE WHEN 逻辑合并,6个子查询合并为1个查询,做1次 group by,做 join,欢迎分享,转载请注明来源:内存溢出
评论列表(0条)