有人能告诉我我做错了什么吗?我在mysql中执行350次插入,大概花了40秒。
以下是代码
long t0 = System.currentTimeMillis();
Connection con = connectionProvider.getConnection();
PreparedStatement s = con.prepareStatement("insert into domkee.friends(idFriends,friend1Id,friend2Id,friend2Name) values(?,?,?,?)");
我正在尝试将大量数据插入到数据库中,我希望以最有效的方式实现。现在,我将对象存储在数组列表中,当数组列表的大小变为5000时,我将遍历所有元素并创建一个具有多个值的mysql插入字符串,然后调用executeUpdate()函数。我想知道有没有更快的方法来做到这一点,例如,我可以创建一个本地CSV文件并一次性使用LOAD data local INFILE,或者我可以仍然使用arraylist来执行准备好的语句,而不是将数据存储在数组中。你能给我一些建议吗,哪一个是最好的,或者有其他方法可以做到吗?
谢谢。
我希望迭代一个USERS表,对于根据where子句选择的每个用户,在循环中执行一系列mysql查询,包括创建临时表、使用prepare语句等
如果这样做,在性能方面最好的方法是什么。使用while,for each,for,repeat?
例如(伪代码)
foreach user_name in (select user_name from users where user_type = 'SP' and active = 'Y')
do
set @l_query1 = concat("create temp_table_t1 select *
我有一个脚本,当用户搜索“苹果”时,有一列与“闪亮的苹果”和“腐烂的苹果”等相关搜索。
问题是我的搜索数据库有5,600,000行,而mysql非常落后。
下面是我的代码:
$get = mysql_query("SELECT keyword FROM searches WHERE MATCH (keyword) AGAINST ('".mysql_real_escape_string(preg_replace('#([\S]+)#', '$1', $title))."' IN BOOLEAN MODE) LIMIT 0,
我的mysql只处理读请求。我想,这将是一个好主意,完全利用缓存。我在VM中运行MySQL,这是在VM中运行的唯一应用程序。我为该虚拟机分配了2 2GB内存。我在虚拟机上使用的是64位的centos。如果您认为它已经使用了可以使用的最大内存,我还可以为该VM分配更多内存。我不太擅长理解mysql设置和找出进程使用的内存占用,但我有兴趣学习如何。非常感谢你的帮助。
以下是关于我的MYSQL的一些信息:
mysql> show global variables like "%cache%";
+------------------------------+----------
我有数据,这些数据是3000+行。因此,在此之前,我需要将数据导入另一个tabe。所以以前我是这样做的
<?php
foreach($datas as $data){
//INSERT INTO table_name with $data
$con->query('insert query');
}
?>
然后,我想每次插入都会消耗一些时间,连接到mysql并运行insert查询,尽管我们最初创建了连接。因此,我尝试先创建查询,然后插入
因此,只执行一次mysql,避免每次连接和插入等。
<?php
foreach($datas as $data