MySQL DBA's Blog

MySQL分页优化(功能篇)

当数据量大到一定程度的时候,用户往往已经无法一次性查看所有数据,于是就产生了分页需求。
纵观百度、腾讯、网易、淘宝等大型互联网公司的产品,分页之处比比皆是。下面是淘宝的评价页面截图:

说实话,淘宝的分页太过于强大,想怎么查看就怎么查看。不加限制的分页功能,会给系统带来极大的压力和隐患。要优化分页,就必须要舍弃一些华而不实的功能。下面就是造成巨大压力的几个祸首:
1、跳页。用户实际上并不知道在哪一页会出现什么样的内容,也就是说用户无法预期自己跳页后将会获得的数据。从这个角度想,跳页是用户的一种不精确行为。假设某用户查询了2009-01-01到2010-01-01的数据,他在翻了几页之后突然想起需要查看2009-11-11那一天的评价,于是他就使用了跳页功能。跳到差不多的页数后,他再慢慢向前或者向后翻页。

2、无限制翻页。翻页功能是必要的,但是无限制的翻页往往会消耗过多的性能。典型代表就是网络爬虫。

以下截图是更合理的分页方式:


百度贴吧取消了大幅度的跳页功能,用户只能在10页范围内进行跳跃。
而twitter更狠,用户只能获取最新的消息,想要查看更久远一些的内容,必须点more按钮。

作为淘宝的用户,我觉得跳页功能多少有点鸡肋。PD应该改进产品,培养用户使用搜索条件的习惯。为了查找2009-11-11的数据而在2009-01-01到2010-01-01的数据里面跳来跳去,还不如直接在2009-11-10到2010-11-12的数据里面精确定位自己想要的内容。

Tags: ,

Leave a Reply