Mysql大量插入数据时SQL语句的优化

1) 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据。 
    ALTER TABLE tblname DISABLE KEYS;
    loading the data
    ALTER TABLE tblname ENABLE KEYS;
这两个命令用来打开或者关闭Myisam表非唯一索引的更新。在导入大量的数据到一个非空的Myisam表时,通过设置这两个命令,可以提高导入的效率。对于导入大量数据到一个空的Myisam表,默认就是先导入数据然后才创建索引的,所以不用进行设置。

而对于Innodb类型的表,这种方式并不能提高导入数据的效率。

2) 对于Innodb类型的表,我们有以下几种方式可以提高导入的效率:

    • 因为Innodb类型的表是按照主键的顺序保存的,所以将导入的数据按照主键的顺序排列,可以有效的提高导入数据的效率。如果Innodb表没有主键,那么系统会默认创建一个内部列作为主键,所以如果可以给表创建一个主键,将可以利用这个优势提高导入数据的效率。
    • 在导入数据前执行SET UNIQUE_CHECKS=0,关闭唯一性校验,在导入结束后执行SET UNIQUE_CHECKS=1,恢复唯一性校验,可以提高导入的效率。
    • 如果应用使用自动提交的方式,建议在导入前执行SET AUTOCOMMIT=0,关闭自动提交,导入结束后再执行SET AUTOCOMMIT=1,打开自动提交,也可以提高导入的效率。
时间: 2024-10-22 09:02:45

Mysql大量插入数据时SQL语句的优化的相关文章

mysql 删除重复数据的sql语句

CREATE TABLE tmp AS SELECT id FROM get_review_url WHERE (no,title,name,content) IN (SELECT no,title,name,content FROM get_review_url GROUP BY no,title,name,content HAVING COUNT(*) > 1) AND id NOT IN (SELECT MIN(id) FROM get_review_url GROUP BY no,tit

eclipse连接mysql,插入数据时乱码

问题:如果eclipse中项目的编码方式为utf-8 插入数据后,在数据库中查看后,汉字出现乱码情况 解决方法: 1.在获取连接的时候将conn = DriverManager.getConnection("jdbc:mysql://localhost:3036/game","root","root");修改为 conn = DriverManager.getConnection("jdbc:mysql://localhost:3036

MYSQL中插入数据时出现的问题:

问题: mysql> insert tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('Y400N 14.0英寸笔记本','笔记本','联','3990',default,default); ERROR 1366 (HY000): Incorrect string value: '\xB4\xE7\xB1\xCA\xBC\xC7...' for column 'goods_name

eclipse往mysql里面插入数据时的乱码

其实解决这个问题就是要保证整个数据插入过程中字符编码要一致.要有三个方面注意的, 第一个是msyl数据库,就是保证mysql的数据库以及表多要保证编码是一致的比如都是UTF-8, 第二个是,eclipse这边也要保证项目,工作空间和java文件的编码格式也是UTF-8, 第三个是,就是配置文件里面jdbc的url的(jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8)后面也要设置编码(这个问题以前没遇到,这次出现乱码最后才发现是他

python脚本批量生成50000条插入数据的sql语句

1 f = open("xx.txt",'w') 2 for i in range(1,50001): 3 str_i = str(i) 4 realname = "lxs"+str_i 5 phone = 13678101715 + i 6 email = "lxs" + str_i +"@126.com" 7 sql = 'insert into table_a (realname,phone,email,sign,eve

Mybatis + Mysql 插入数据时中文乱码问题

近日跟朋友一起建立一个项目,用的是spring+mybatis+mysql. 今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱码,一般有两种情况: 数据库本身设置 连接数据库时,jdbc的编码设置 对于第一种情况,可以查看自身的mysql设置: show variables like '%character%' 显示指定编码可解决问题: <!-- 1. 数据源 : DriverManagerDataSource -->

Python将JSON格式数据转换为SQL语句以便导入MySQL数据库

前文中我们把网络爬虫爬取的数据保存为JSON格式,但为了能够更方便地处理数据,我们希望把这些数据导入到MySQL数据库中.phpMyadmin可以把MySQL数据库中的数据导出为JSON格式文件,但却不能把JSON格式文件导入到MySQL数据库.为了实现这个目标,可以编写Python脚本将JSON格式数据转换为SQL语句以便导入MySQL数据库. JSON文件tencent.json部分内容: {"recruitNumber": "1", "name&qu

MySQL插入数据时插入无效的列

1.错误描述 com.mysql.jdbc.exception:jdbc4.MySQLSyntaxErrorException:Unknown column 'man' in 'field list' 2.错误原因 数据库表中的字段:sno     sname    sage     ssex 插入数据时:          sno     sname    sage     man          本来是想插入ssex这个字段的值为"man",结果将man弄成了ssex字段名 3.

sql插入多条数据的sql语句

sql插入多条数据的sql语句 有三种方法:1.InSert Into <表名>(列名)Select <列名>From <源表名>如:INSERT INTO TongXunLu (姓名,电话,电子邮件) SELECT SName,SAddress,SEmailFROM Students 这种方法需要先建好新表.2.Select (列名)Into <表名>From <源表名>如:SELECT Students.SName,Students.SAdd