WEB开发网
开发学院数据库MySQL MYSQL三种插入方式对比:单条插入、LOAD DATA、存储... 阅读

MYSQL三种插入方式对比:单条插入、LOAD DATA、存储过程

 2009-06-04 10:43:13 来源:WEB开发网   
核心提示: 消耗了123秒LOAD DATA指令: 首先需要生成数据文件,要100000条,MYSQL三种插入方式对比:单条插入、LOAD DATA、存储过程(3),作为程序员的我们怎么可以是复制呢?自己编写呗! 以下为引用的内容:package com.ys.db.init; import java

消耗了123秒

LOAD DATA指令:

首先需要生成数据文件,要100000条,作为程序员的我们怎么可以是复制呢?自己编写呗!

以下为引用的内容:

package com.ys.db.init;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class GInert {

public static void main(String args[]) {
try {
File f = new File("./src/i.sql");
if (!f.exists()) {
f.createNewFile();
}
FileOutputStream out = new FileOutputStream(f, true);
for (long i = 0; i < 100000; i++) {
out
.write((i + "\tusername\r\n")
.getBytes());
}
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

测试类:

package com.ys.db.init;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class TestInsert2 {

public static void main(String[] args) {
DataSource d = new DataSource();
Connection connection = d.getConnection();
Statement createStatement = null;
try {
createStatement = connection.createStatement();
String sql = "Load Data InFile 'F:/mysqlTest/mysqlInsertTest/src/i.sql' Into Table

`insertTB`";
long start = System.currentTimeMillis();
createStatement.execute(sql);
long end = System.currentTimeMillis();
System.out.println((end - start) / 1000);
createStatement.close();
connection.close();
// 0秒
} catch (SQLException e) {
e.printStackTrace();
}
}
}

仅仅需要0秒!

存储过程:

新建存储过程

delimiter //
CREATE PROCEDURE idata()
BEGIN
DECLARE a INT;
SET a = 1;
WHILE a < 100000 DO
INSERT INTO insertTB VALUES(a, 'username');
SET a = a + 1;
END WHILE;
END;//

测试类:

package com.ys.db.init;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class TestInsert3 {

public static void main(String[] args) {
DataSource d = new DataSource();
Connection connection = d.getConnection();
Statement createStatement = null;
try {
createStatement = connection.createStatement();
String sql = "call idata();//";
long start = System.currentTimeMillis();
createStatement.execute(sql);
long end = System.currentTimeMillis();
System.out.println((end - start) / 1000);
createStatement.close();
connection.close();
//
} catch (SQLException e) {
e.printStackTrace();
}
}
} 

也只是使用了0秒

从上可知道,存储过程和LOAD DATA都会比单条语句的插入快的多!

上一页  1 2 3 

Tags:MYSQL 插入 方式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接