作者:狠毒的水瓶_617_223_489_321 | 来源:互联网 | 2023-05-23 14:07
用js写的 Mysql 插入数据 100条用8s 怎么办啊啊啊啊啊
代码如下:
function insertComment(comments, weiboid){
var conn = new Jaxer.DB.MySQL.Connection({
HOST: 'localhost',
PORT: '3306',
USER: 'root',
PASS: 'admin',
NAME: 'sinaweibo',
CLOSE_AFTER_EXECUTE: true
});
var count = 0, statement = "", f_statement = "",u_statement = "", times = 0, ttimes = 0,utimes = 0;//初始化
for (var one in comments) {
var f_count = 0, b_count = 0;
var c_time = new Date(comments[one].created_at);
var i_time = new Date();//当前时间
f_count = Is_Num2(comments[one].followers_count);
c_time = formatDate2(c_time);
i_time = formatDate2(i_time);
if (getCommentData(comments[one].id)) {
if (times == 0) {
Statement = "('" + c_time +
"','" + i_time +
"','" + comments[one].id +
"','" + comments[one].mid +
"','" + comments[one].idstr +
"','" + comments[one].text +
"','" + comments[one].userid +
"','" + comments[one].username +
"','" + comments[one].followers_count +
"','" + comments[one].weiboid +
"')";
times = 1;
}
else {
statement += ",('" +
c_time +
"','"+
i_time +
"','" +
comments[one].id +
"','" +
comments[one].mid +
"','" +
comments[one].idstr +
"','" +
comments[one].text +
"','" +
comments[one].userid +
"','" +
comments[one].username +
"','" +
comments[one].followers_count +
"','" +
comments[one].weiboid +
"')";
}
count++;//评论数
}
}
try {
[code=Javascript][code=Javascript]
[/code]if (times != 0) {//至少有开头
var result = conn.execute("insert into comment(created_at,insert_at, commentid, mid, idstr, text,userid,username,followers_count,weiboid) values " + statement);
}
return count;
}
catch (e) {
count = -1;
return count;
}
}[/code]
9 个解决方案
1 是否是网络延迟的问题
2 是否是程序跑的慢
3 数据库端你可以设置innodb_flush_log_at_trx_commit=0来提高插入速度
很一般的语句,并无复杂之处,极有可能 是你的程序问题。
建议你单独在数据库执行一番。
看看是否while,for有不合理之处。
你echo $sql(拼接的,)再exit退出循环。
把得到的sql 在mysql 执行一番,
若时间在
8s/你的循环次数,
则说明是数据库的事,
自己调试一番
在一个数据库连接中插入100条数据,你不要插入一条就关闭一条数据库连接,哪样每次都要重新建立连接,Socket是很慢的,还有PHP中的MYSQL扩展库提供了一个函数可以用于批量插入数据,你查下手册