加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql分页性能优化:提高mysql大数据量下分页查询速度

发布时间:2020-12-25 14:28:55 所属栏目:编程 来源:网络整理
导读:《mysql分页性能优化:提高mysql大数据量下分页查询速度》要点: 本文介绍了mysql分页性能优化:提高mysql大数据量下分页查询速度,希望对您有用。如果有疑问,可以联系我们。 关于分页的优化。 我们知道,在MySQL中分页很简单,直接LIMIT page_no,page_tota
副标题[/!--empirenews.page--]

《mysql分页性能优化:提高mysql大数据量下分页查询速度》要点:
本文介绍了mysql分页性能优化:提高mysql大数据量下分页查询速度,希望对您有用。如果有疑问,可以联系我们。

关于分页的优化。
我们知道,在MySQL中分页很简单,直接LIMIT page_no,page_total 就可以了。
可是当记录数慢慢增大时,她就不那么好使了。
这里我们创建摘要表来记录页码和原表之间的关联。
下面为测试数据。

原表:

CREATE TABLE `t_group` (
   `id` int(11) NOT NULL auto_increment,   `money` decimal(10,2) NOT NULL,   `user_name` varchar(20) NOT NULL,   `create_time` timestamp NOT NULL default CURRENT_TIMESTAMP on update   CURRENT_TIMESTAMP,   PRIMARY KEY  (`id`),   KEY `idx_combination1` (`user_name`,`money`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;


原表总记录数:

mysql> select count(*) from t_group;
 +----------+
 | count(*) |
 +----------+
 | 10485760 |
 +----------+
 1 row in set (0.00 sec)


分页表:

CREATE TABLE `t_group_ids` (
   `id` int(11) NOT NULL,   `group_id` int(11) NOT NULL,   PRIMARY KEY  (`id`,`group_id`),   KEY `idx_id` (`id`),   KEY `idx_group_id` (`group_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


插入分页表数据。当然这里如果你的表主键不是ID,那你得自己想办法搞这个分页表的数据了。这个好实现,就不说了。

mysql> insert into t_group_ids select ceil(id/20),id from t_group;
 Query OK, 10485760 rows affected (2 min 56.19 sec)
 Records: 10485760  Duplicates: 0  Warnings: 0

看到初始维护耗时较长

现在来看看对比数据。

用普通LIMIT来实现分页。

mysql> select * from t_group where 1 limit 20;
 +----+--------+-----------+---------------------+
 | id | money  | user_name | create_time         |
 +----+--------+-----------+---------------------+
 |  1 |  50.23 | david     | 2008-10-23 12:55:49 |
 |  2 |  55.23 | livia     | 2008-10-23 10:02:09 |
 |  3 | 100.83 | leo       | 2008-10-23 10:02:22 |
 |  4 |  99.99 | lucy      | 2008-10-23 10:02:39 |
 |  5 | 299.99 | simon     | 2008-10-23 10:02:52 |
 |  6 | 599.99 | sony      | 2008-10-23 10:03:03 |
 |  7 | 599.99 | rick      | 2008-10-23 10:03:12 |
 |  8 |   9.99 | anne      | 2008-10-23 10:03:47 |
 |  9 |   9.99 | sarah     | 2008-10-23 10:04:31 |
 | 10 | 900.99 | john      | 2008-10-23 10:04:50 |
 | 11 |   0.23 | david     | 2008-10-23 10:05:31 |
 | 12 |   5.23 | livia     | 2008-10-23 10:05:31 |
 | 13 |  50.83 | leo       | 2008-10-23 10:05:31 |
 | 14 |  49.99 | lucy      | 2008-10-23 10:05:31 |
 | 15 | 249.99 | simon     | 2008-10-23 10:05:31 |
 | 16 | 549.99 | sony      | 2008-10-23 10:05:31 |
 | 17 | 549.99 | rick      | 2008-10-23 10:05:31 |
 | 18 | -40.01 | anne      | 2008-10-23 10:05:31 |
 | 19 | -40.01 | sarah     | 2008-10-23 10:05:31 |
 | 20 | 850.99 | john      | 2008-10-23 10:05:31 |
 +----+--------+-----------+---------------------+
 20 rows in set (0.01 sec)


(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读