php – 22秒是在mysql中插入500行的好时机吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 22秒是在mysql中插入500行的好时机吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1347字,纯文字阅读大概需要2分钟。
内容图文
以下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行的好时机吗?全部内容,希望文章能够帮你解决php – 22秒是在mysql中插入500行的好时机吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。