php - 22 秒是否适合在 mysql 中插入 500 行?

标签 php mysql

执行以下 php 脚本大约需要 22 秒。正常吗?如果不是,什么会导致它执行缓慢?

$conn = mysql_connect('localhost', 'root', '123');
mysql_select_db('mydb', $conn);
$time1 = time();
for ($i=1;$i<500;$i++) {
mysql_query("Insert into accounts(id, username, email, password) VALUES(\"$i\", \"$i\",\"$i\",NOW())");
}
print time() - $time1; // return ~22

编辑:表结构:

CREATE TABLE IF NOT EXISTS `accounts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `email` varchar(200) NOT NULL,
  `password` varchar(20) NOT NULL,
  `status` varchar(10) DEFAULT 'pending',
  `email_newsletter_status` varchar(3) DEFAULT 'out',
  `email_type` varchar(4) DEFAULT 'text',
  `email_favorite_artists_status` varchar(3) DEFAULT 'out',
  `created_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7500 ;

这段代码只是为了测试插入速度。使用 Zend 框架(Zend_Db 的插入方法)我得到了类似的结果,所以我认为它与 mysql 相关而不是 php 代码

Edit2:我知道有更好的方法来执行这个查询,但我想知道为什么这个方法这么慢。

最佳答案

22 秒是很长的时间。我的猜测是每次插入后,INDEX 都需要更新。

尝试将其作为事务处理。

mysql_query("START TRANSACTION");
for ($i=1;$i<500;$i++) {
    mysql_query("Insert into accounts(id, username, email, password) VALUES(\"$i\", \"$i\",\"$i\",NOW())");
}
mysql_query("COMMIT");

关于php - 22 秒是否适合在 mysql 中插入 500 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11976989/

相关文章:

php - 如何通过连接两个表而不重叠具有相同关系 ID 的记录来创建 TableView

mysql - Rails 关联模型聚合的性能改进

mysql - Python : df. to_sql with OperationalError 1046, 'No database selected and OperationalError 2005, "Unknown MySQL server hos

php - mysql join 未正确执行

mysql - 数据库错误无效值

php - 如何在 Laravel 4 中连接表

php - 按列值对 mySQL 结果进行排序

php - 如何将用户上传文件到我的数据库并发送给登录的特定用户?

php - 如何将 php 变量传递给同一页面中的另一个表单?

php - 使用 Jquery 和 Ajax 动态填充表单