加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL快速创建800w条测试数据表&深度分页

发布时间:2022-11-21 14:39:45 所属栏目:MySql教程 来源:网络
导读: MySQL快速创建800w条测试数据表&深度分页
如果在普通表格中插入条mysql分页,效率太低,但内存表的插入速度很快,可以先创建内存表,插入数据,然后再导入到普通表格中。
[En]
If a bar is

MySQL快速创建800w条测试数据表&深度分页

如果在普通表格中插入条mysql分页,效率太低,但内存表的插入速度很快,可以先创建内存表,插入数据,然后再导入到普通表格中。

[En]

If a bar is inserted into the ordinary table, the efficiency is too low, but the insertion speed of the memory table is very fast, you can first create a memory table, insert the data, and then import it into the ordinary table.

1、创建内存表

2、创建普通表

普通表的参数设置与内存表相同,否则将内存表中的数据导入正常标准会报错。

[En]

The parameter setting of the normal table is the same as that of the memory table, otherwise importing data from the memory table to the normal standard will report an error.

3、创建存储函数

产生伪随机码user_id 要用到存储函数。

4、创建存储过程

存储过程是保存起来的可以接受和返回用户提供的参数的Transact-SQL 语句的集合,可以创建一个过程供永久使用。

5、调用存储过程

call 就是调用存储过程或者函数,这里调用存储过程1000000次

6、导入数据

将内存表中的数据导入普通表。

7、内存不足

如果报错内存满了,报错信息如下:

则可以使用命令查看内存表和临时表允许写入的最大值:

MySQL默认16M:

修改默认内存配置:

配置修改后,再执行上述调用存储过程和数据导入步骤。

8、查看结果

查看记录,是否有插入100W条数据。

9、插入800W条数据

测试插入800W条数据,call 调用存储过程800W次。

查看结果:

800W条测试数据插入OK,想插入多少条测试数据就调用n次存储过程,CALL add_vote_memory(n)。

二、MySQL深度分页

所谓的深度分页问题,涉及到mysql分页的原理。通常情况下,mysql的分页是这样写的:

SQL意思就是从vote_reccord 表里查200到210这10条数据即【201,210】,mysql会把前210条数据都查出来,抛弃前200条,返回10条。当分页所以深度不大的时候当然没问题,随着分页的深入,sql可能会变成这样:

这个时候,mysql会查出来7999920条数据,抛弃前7999900条,如此大的数据量,速度一定快不起来。

那么如何解决这个问题呢?通常,最简单的方法是添加一个使用表的覆盖索引来加快分页查询速度的条件:

[En]

Then how to solve the problem? In general, the easiest way is to add a condition that uses the table’s overlay index to speed up the paging query:

我们都知道,如果在利用索引查询(覆盖索引)的语句中只包含该索引列,则该查询是快速的。

[En]

We all know that if only that index column is included in a statement that takes advantage of an index query (overriding the index), then the query is fast.

因为利用索引查找有优化算法,且数据就在查询索引上面,不用再去找相关的数据地址了,这样节省了很多时间。上述vote_record 表的id字段是主键,自然就包含了默认的主键索引,这样,mysql会走主键索引,直接连接到7999900处,然后查出来10条数据。但是这个方式需要接口的调用方配合改造,把上次查询出来的最大id以参数的方式传给接口提供方,会有一定沟通成本。

1、测试深度分页

优化前,查询耗时2.362s,随着数据的增大耗时会更多,limit语句的查询时间与起始记录的位置成正比。

优化后,耗时0.012s,性能提升了196.8倍。

Original:

Author: 涛姐涛哥

Title: MySQL快速创建800w条测试数据表&深度分页

(编辑:财气旺网 - 财气网)

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