MySQL的分页优化方案
本篇内容主要讲解“MySQL的分页优化方案”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL的分页优化方案”吧!
创新互联建站是一家集网站建设,宜城企业网站建设,宜城品牌网站建设,网站定制,宜城网站建设报价,网络营销,网络优化,宜城网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
MySQL分页优化:
SQL: select * from t_user u order by id limit 5000000, 10 分析:mysql会读取5000010条数据,然后只返回最后10条,查询的时间很长。 优化方案: 方案一:只允许查询前面的数据,不允许查询特别靠后的数据。eg:百度搜索出的结果,最多七十多页。 方案二:在查询下一页时把上一页最后一条数据的id(lastId)传过来,即:select * from t_user u where id > 5000000 order by id limit 10 注意:如果where条件中的判断条件还有其它非主键列,则需要建立复合索引,复合索引中必须包含where语句中的列。 方案三:延迟关联非索引列,即:select * from t_user u1 inner join (select id from t_user order by id limit 5000000, 10 ) u2 on u1.id=u2.id 实验: 环境:win7下MySQL5.6 t_user表中有6,274,934条数据,以下是t_user的建表语句: CREATE TABLE `t_user` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `bu_id` INT(20) NOT NULL, `name` VARCHAR(255) NOT NULL, `age` INT(11) NOT NULL, `sex` VARCHAR(255) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB; select * from t_user u order by id limit 5000000, 10 # 2.746 sec 只有这一个查询sql时,查询所需的时间。 # 25.615 sec 有一个不断往t_user表中插新数据的函数(或过程)一直在跑的情况下,执行上面的sql查询出数据所需的时间。 select * from t_user u where id > 5000000 order by id limit 10 # 0.047 sec 只有这一个查询sql时,查询所需的时间。 # 0.063 sec 有一个不断往t_user表中插新数据的函数(或过程)一直在跑的情况下,执行上面的sql查询出数据所需的时间。 select * from t_user u1 inner join (select id from t_user order by id limit 5000000, 10 ) u2 on u1.id=u2.id # 2.137 sec 只有这一个查询sql时,查询所需的时间。 # 13.604 sec 有一个不断往t_user表中插新数据的函数(或过程)一直在跑的情况下,执行上面的sql查询出数据所需的时间。
到此,相信大家对“MySQL的分页优化方案”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
网页题目:MySQL的分页优化方案
标题来源:http://scyanting.com/article/ggcidh.html