mysql数据库数据批量插入的实现

 更新时间:2024年11月11日 10:17:14   作者:danYan_01  
本文介绍了在MySQL数据库中进行数据批量插入和性能测试的方法,包括使用Navicat批量插入数据、编写SQL测试、索引的创建和使用、查询测试以及提升SQL性能的优化方法,感兴趣的可以参考一下

0 、前言

在写sql语句的时候常常会有很多疑问,那就是当单表的数据量很大的时候,查询性能怎么样,以及索引对数据查询的影响,今天用navicat批量造了很多重复数据来对mysq在数据量大的时候查询的性能的测试。

1 、使用navicat批量插入数据

函数—>新建函数–>填写名,选择函数,点击完成

在这里插入图片描述

填写函数

CREATE DEFINER=`root`@`%` PROCEDURE `userDataInsert`()
BEGIN
	# 设置循环变量
   DECLARE i INT DEFAULT 0;
WHILE i<=100000 DO
 INSERT INTO sup_check(advertiser_id,check_time,record_types_id,dept_id) VALUES(20,'2024-04-09',1,203);
 SET i = i + 1;
END WHILE;
END

保存后点击运行即可,此处会执行时间较长,主要看你的主机性能,磁盘的读写速度等,最好在自己的本地虚拟机中去跑,节省时间。

2、编写sql测试

此sql就是单表的查询(嵌套子查询),根据年份然后按照年月去对数据进行一个分组,问gpt的时候,gpt说使用函数的时候进行的是全表的扫描,不走索引,此时很慌,很想测试一下,走索引和不走索引到底有什么区别

SELECT year(check_time) as year ,month(check_time) as month ,COUNT(*) as checkNum
FROM sup_check   
WHERE 
    (dept_id = 100 OR dept_id IN (SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET(100,ancestors)))
    AND year(check_time) = 2024
GROUP BY year,month
ORDER BY year,month;

3、索引相关

单列索引

CREATE INDEX idx_check_time
ON sup_check (check_time);

复合索引

CREATE INDEX idx_column1_column2 ON sup_check (check_time, record_type_id);

唯一索引

CREATE UNIQUE INDEX uidx_column_name ON table_name (column_name);

全文索引

CREATE FULLTEXT INDEX ftx_column_name ON table_name (column_name);

使用表名 ,在某些情况下,你可能还想在索引名称中包含表名,尤其是在大型数据库中,这有助于避免索引名称冲突:

CREATE INDEX idx_table_name_column_name ON table_name (column_name);

注意事项
避免使用特殊字符:不要在索引名称中使用特殊字符,如 !, @, #, $, %, ^, &, *, (, ), -, +, =, {, }, [, ], |, , ;, :, ', ", , <, >, /, ?`。
长度限制:MySQL索引名称的最大长度是64个字符

查看索引

这将返回以下列:

  • Table:表名
  • Non_unique:如果索引不能包含重复值,则为0;如果可以,则为1。
  • Key_name:索引的名称。
  • Seq_in_index:索引中的列序列号。
  • Column_name:列名。
  • Collation:列如何排序,如果是定序的,则显示排序顺序;如果是未排序的,则显示NULL。
  • Cardinality:索引中唯一值的估计数量。
  • Sub_part:如果列只是部分索引,则为索引的字符数。如果是整个列被索引,则为NULL。
  • Packed:指示关键字如何被压缩,如果没有被压缩,则为NULL。
  • Null:如果列含有NULL,则显示YES。
  • Index_type:索引类型,如BTREE、FULLTEXT、HASH等。
  • Comment:索引的备注信息。
SHOW INDEX FROM table_name;

4、查询测试

建立完索引之后,我发现当查询出的数据量比较大的时候,查询指定数据的速度确实快了,但是当所查询出的字段多或者数据条数多的时候还是会耗费很长时间,那解决办法就是分页,一下查询出这么多条数据肯定慢,分页的话就特别快了。

SELECT year(check_time) as year ,month(check_time) as month ,COUNT(*) as checkNum
FROM sup_check   
WHERE 
    (dept_id = 100 OR dept_id IN (SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET(100,ancestors)))
    AND year(check_time) = 2024
GROUP BY year,month
ORDER BY year,month;
LIMIT 20 OFFSET 0;

5、提升sql的办法

优化sql,经常查询的字段使用索引,查询出需要使用的字段,分页查询

6、探讨分页查询的基本实现原理

首先使用count(*) 查询出数据总条数,此查询是经过mysql优化过的,速度比较快,或者你去count(索引列)然后就是根据每页的数据大小计算出总的页数(int totalPages = (totalRecords + pageSize - 1) / pageSize;),然后就是执行分页查询,查询指定页的数据

到此这篇关于mysql数据库数据批量插入的实现的文章就介绍到这了,更多相关mysql 数据批量插入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL关于ERROR 1290 (HY000)报错解决方法

    MySQL关于ERROR 1290 (HY000)报错解决方法

    在本篇文章里小编给大家整理的是关于MySQL关于ERROR 1290 (HY000)报错的解决方法,有兴趣的朋友们可以参考下。
    2019-09-09
  • 利用MySQL统计一列中不同值的数量方法示例

    利用MySQL统计一列中不同值的数量方法示例

    这篇文章主要给大家介绍了利用MySQL统计一列中不同值的数量的几种解决方法,每种方法都给了详细的示例代码供大家参考学习,相信对大家具有一定的参考价值,需要的朋友们下面跟随小编一起来看看吧。
    2017-04-04
  • win10安装zip版MySQL8.0.19的教程详解

    win10安装zip版MySQL8.0.19的教程详解

    这篇文章主要介绍了win10安装zip版MySQL8.0.19的教程详细,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • mysql5.7.21.zip安装教程

    mysql5.7.21.zip安装教程

    这篇文章主要为大家详细介绍了mysql5.7.21.zip安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • MySQL性能优化之分区表的使用详解

    MySQL性能优化之分区表的使用详解

    在当今数据驱动的时代,大型数据库的性能优化对于企业的成功至关重要,本文将深入探讨MySQL分区表的基础知识、性能优势、分区策略的选择和实施等内容,感兴趣的小伙伴可以了解一下
    2023-06-06
  • MySQL PXC构建一个新节点只需IST传输的方法(推荐)

    MySQL PXC构建一个新节点只需IST传输的方法(推荐)

    下面小编就为大家带来一篇MySQL PXC构建一个新节点只需IST传输的方法(推荐)。小编觉的挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • MySQL中WITH AS语句的使用方法举例

    MySQL中WITH AS语句的使用方法举例

    在MySQL中WITH AS语法用于创建一个临时的命名查询(也称为子查询),这些子查询可以在后续的查询中引用,从而简化查询语句的编写,这篇文章主要给大家介绍了关于MySQL中WITH AS语句的使用方法,需要的朋友可以参考下
    2024-06-06
  • 与MSSQL对比学习MYSQL的心得(五)--运算符

    与MSSQL对比学习MYSQL的心得(五)--运算符

    MYSQL中的运算符很多,这一节主要讲MYSQL中有的,而SQLSERVER没有的运算符
    2014-06-06
  • Mysql索引详细介绍

    Mysql索引详细介绍

    这篇文章主要介绍了Mysql索引详细介绍,本文讲解了Mysql索引简介、设计索引的原则、如何使用索引等内容,需要的朋友可以参考下
    2014-07-07
  • MySQL group_concat函数使用方法详解

    MySQL group_concat函数使用方法详解

    GROUP_CONCAT函数用于将GROUP BY产生的同一个分组中的值连接起来,返回一个字符串结果,接下来就给大家简单的介绍一下MySQL group_concat函数的使用方法,需要的朋友可以参考下
    2023-07-07

最新评论