扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
$sql = "INSERT INTO `TABLE`(name,password) VALUES
创新互联建站2013年开创至今,先为乐平等服务建站,乐平等地企业,进行企业商务咨询服务。为乐平企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
('张三','123'),
('李四','123'),
('王五','123'),
('赵六','123'),
('田七','123')........";
安照上面的方式插入数据库是效率更高,速度更快
望采纳 Thx
通过导入文件的方式插入,文件可以用其他方式先生成,比如使用java,来生成data1.txt,然后使用下面的sql语句:
load data local infile 'd:/data1.txt' replace into table hk_acinfo lines terminated by '\\r\\n'
使用这个方法,我插入过1千万以上的数据,如果没有网络影响的话,每秒1M+/s的速度写入,很快的
1 索引可以先去了 这样会快点 插入完毕之后再重建索引
2 不要1个insert一条数据 可以一条长长的insert 里面包含1000条数据 做一次插入操作,这样快很多
mysql5的手册中提到,插入一条记录,所需的时间比例大概是:
连接:(3)
发送查询给服务器:(2)
分析查询:(2)
插入记录:(1x记录大小)
插入索引:(1x索引)
关闭:(1)
并且表的大小以logN(B树)的速度减慢索引的插入,因此提高插入速度的方法大概有以下7种:
一个insert语句包含多个value值;
使用insert delayed方法;
使用insert into ...values(select ...from),即select的同时执行insert;
使用load data infile;
先禁掉索引,插入后再创建索引;
写锁表,插入,解锁。原因是索引缓存区仅在所有insert语句完成后才刷新到磁盘上一次;
增加key_buffer_size值来扩大键高速缓冲区。
你好,
linux如下设置内存盘:mount -t ramfs none /ram默认使用内存一半如果内存不够大,系统有多个硬盘,则把mysql应用程序和data目录分开到不同硬盘上。2、mysql的表设置为myiasm,比同等条件下的innodb能快20倍以上3、导入完成以后才创建数据库索引4、导入完成以后根据需要转换为其他engine,比如innodb5、多条数据插入一个表,可以使用多记录方式:insert into tablename values('xxx','xxx'),('yyy','yyy')...;6、如果多个mysql执行导入,可以使用delayedinsert delayed into tablename values('sss','ssss');7、大文件sql文件可以用split分成多份再导8、同等条件下,redhat比ubuntu强很多(几乎肯定)
希望回答对您有帮助.
如果原表很大,插入数据会非常慢,建议插入到临时表,然后用一个语句(INSERT
INTO
XXX
SELECT
*
FTOM
TMPXXX)把数据插入,这样速度会快一点,如果想更快,需要减少不必要的索引,如果大批量的插入,可以插入前删除索引,插入后重新建立。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流